aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2025-02-13 00:51:32 +0000
committerAlexander Smirnov <alex@ydb.tech>2025-02-13 00:51:32 +0000
commit3c7c5679eaec1de1c2afde140bd7ab2a890e7940 (patch)
treeecf0894140c9d021b5473a06f99433f5ed7ced29
parentb23b0fbcf514dcdbfac9ab6a96949bb3a9e1a836 (diff)
parent0d53cb646786cb840d4a1c95925466c6c2d75334 (diff)
downloadydb-3c7c5679eaec1de1c2afde140bd7ab2a890e7940.tar.gz
Merge branch 'rightlib' into merge-libs-250213-0050
-rw-r--r--build/conf/licenses.json5
-rw-r--r--build/conf/linkers/ld.conf7
-rw-r--r--build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py2
-rw-r--r--build/export_generators/cmake/generator.toml4
-rw-r--r--build/export_generators/cmake/target_commands.jinja15
-rw-r--r--build/mapping.conf.json8
-rw-r--r--build/platform/test_tool/host.ya.make.inc10
-rw-r--r--build/platform/test_tool/host_os.ya.make.inc10
-rw-r--r--build/plugins/_common.py37
-rw-r--r--build/plugins/nots.py1
-rw-r--r--build/scripts/link_exe.py15
-rw-r--r--build/scripts/link_lib.py70
-rw-r--r--build/sysincl/linux-headers.yml1
-rw-r--r--build/ymake.core.conf9
-rw-r--r--contrib/libs/breakpad/microdump_stackwalk/ya.make31
-rw-r--r--contrib/libs/breakpad/minidump_stackwalk/ya.make36
-rw-r--r--contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt140
-rw-r--r--contrib/libs/breakpad/src/third_party/libdisasm/.yandex_meta/licenses.list.txt800
-rw-r--r--contrib/libs/breakpad/src/third_party/libdisasm/ya.make49
-rw-r--r--contrib/libs/breakpad/src/ya.make15
-rw-r--r--contrib/libs/breakpad/ya.make1
-rw-r--r--contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report11
-rw-r--r--contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report8
-rw-r--r--contrib/libs/linux-headers/.yandex_meta/licenses.list.txt4
-rw-r--r--contrib/libs/linux-headers/asm-generic/siginfo.h3
-rw-r--r--contrib/libs/linux-headers/asm-generic/unistd.h5
-rw-r--r--contrib/libs/linux-headers/asm/mman_x86.h10
-rw-r--r--contrib/libs/linux-headers/asm/prctl_x86.h12
-rw-r--r--contrib/libs/linux-headers/asm/unistd-eabi_arm.h1
-rw-r--r--contrib/libs/linux-headers/asm/unistd-oabi_arm.h1
-rw-r--r--contrib/libs/linux-headers/asm/unistd_32_powerpc.h1
-rw-r--r--contrib/libs/linux-headers/asm/unistd_32_x86.h1
-rw-r--r--contrib/libs/linux-headers/asm/unistd_64_powerpc.h1
-rw-r--r--contrib/libs/linux-headers/asm/unistd_64_x86.h2
-rw-r--r--contrib/libs/linux-headers/asm/unistd_x32_x86.h1
-rw-r--r--contrib/libs/linux-headers/drm/amdgpu_drm.h7
-rw-r--r--contrib/libs/linux-headers/drm/drm.h84
-rw-r--r--contrib/libs/linux-headers/drm/drm_mode.h7
-rw-r--r--contrib/libs/linux-headers/drm/ivpu_accel.h9
-rw-r--r--contrib/libs/linux-headers/drm/nouveau_drm.h281
-rw-r--r--contrib/libs/linux-headers/drm/virtgpu_drm.h16
-rw-r--r--contrib/libs/linux-headers/linux/bpf.h150
-rw-r--r--contrib/libs/linux-headers/linux/btrfs_tree.h6
-rw-r--r--contrib/libs/linux-headers/linux/cgroupstats.h2
-rw-r--r--contrib/libs/linux-headers/linux/cn_proc.h62
-rw-r--r--contrib/libs/linux-headers/linux/devlink.h4
-rw-r--r--contrib/libs/linux-headers/linux/dlm_plock.h1
-rw-r--r--contrib/libs/linux-headers/linux/elf-fdpic.h15
-rw-r--r--contrib/libs/linux-headers/linux/elf.h2
-rw-r--r--contrib/libs/linux-headers/linux/fsi.h10
-rw-r--r--contrib/libs/linux-headers/linux/fuse.h60
-rw-r--r--contrib/libs/linux-headers/linux/gsmmux.h118
-rw-r--r--contrib/libs/linux-headers/linux/gtp.h2
-rw-r--r--contrib/libs/linux-headers/linux/if_link.h1
-rw-r--r--contrib/libs/linux-headers/linux/if_xdp.h13
-rw-r--r--contrib/libs/linux-headers/linux/io_uring.h21
-rw-r--r--contrib/libs/linux-headers/linux/iommufd.h97
-rw-r--r--contrib/libs/linux-headers/linux/kexec.h1
-rw-r--r--contrib/libs/linux-headers/linux/kvm_arm64.h13
-rw-r--r--contrib/libs/linux-headers/linux/kvm_powerpc.h13
-rw-r--r--contrib/libs/linux-headers/linux/kvm_x86.h13
-rw-r--r--contrib/libs/linux-headers/linux/mdio.h18
-rw-r--r--contrib/libs/linux-headers/linux/mount.h3
-rw-r--r--contrib/libs/linux-headers/linux/netdev.h4
-rw-r--r--contrib/libs/linux-headers/linux/netfilter/nf_tables.h1
-rw-r--r--contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h8
-rw-r--r--contrib/libs/linux-headers/linux/openvswitch.h2
-rw-r--r--contrib/libs/linux-headers/linux/perf_event.h3
-rw-r--r--contrib/libs/linux-headers/linux/pkt_cls.h3
-rw-r--r--contrib/libs/linux-headers/linux/pkt_sched.h1
-rw-r--r--contrib/libs/linux-headers/linux/prctl.h3
-rw-r--r--contrib/libs/linux-headers/linux/psp-dbc.h147
-rw-r--r--contrib/libs/linux-headers/linux/quota.h1
-rw-r--r--contrib/libs/linux-headers/linux/rpmsg.h10
-rw-r--r--contrib/libs/linux-headers/linux/seccomp.h4
-rw-r--r--contrib/libs/linux-headers/linux/sed-opal.h25
-rw-r--r--contrib/libs/linux-headers/linux/serial_core.h44
-rw-r--r--contrib/libs/linux-headers/linux/smc.h2
-rw-r--r--contrib/libs/linux-headers/linux/stddef.h2
-rw-r--r--contrib/libs/linux-headers/linux/ublk_cmd.h64
-rw-r--r--contrib/libs/linux-headers/linux/usb/ch11.h6
-rw-r--r--contrib/libs/linux-headers/linux/usb/ch9.h5
-rw-r--r--contrib/libs/linux-headers/linux/userfaultfd.h25
-rw-r--r--contrib/libs/linux-headers/linux/v4l2-subdev.h2
-rw-r--r--contrib/libs/linux-headers/linux/version.h6
-rw-r--r--contrib/libs/linux-headers/linux/vfio.h150
-rw-r--r--contrib/libs/linux-headers/linux/vhost_types.h4
-rw-r--r--contrib/libs/linux-headers/linux/videodev2.h2
-rw-r--r--contrib/libs/linux-headers/linux/virtio_net.h14
-rw-r--r--contrib/libs/linux-headers/linux/vm_sockets.h17
-rw-r--r--contrib/libs/linux-headers/rdma/bnxt_re-abi.h7
-rw-r--r--contrib/libs/linux-headers/rdma/irdma-abi.h9
-rw-r--r--contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h52
-rw-r--r--contrib/libs/linux-headers/sound/sof/tokens.h6
-rw-r--r--contrib/libs/linux-headers/xen/privcmd.h14
-rw-r--r--contrib/libs/linux-headers/ya.make6
-rw-r--r--contrib/libs/openssl/ar.pyplugin73
-rw-r--r--contrib/libs/openssl/redef.h2
-rw-r--r--contrib/libs/openssl/ya.make11
-rw-r--r--contrib/libs/simdjson/.yandex_meta/devtools.licenses.report30
-rw-r--r--contrib/libs/simdjson/.yandex_meta/override.nix4
-rw-r--r--contrib/libs/simdjson/README.md2
-rw-r--r--contrib/libs/simdjson/include/simdjson/simdjson_version.h4
-rw-r--r--contrib/libs/simdjson/ya.make4
-rw-r--r--contrib/restricted/boost/algorithm/ya.make2
-rw-r--r--contrib/restricted/boost/align/ya.make2
-rw-r--r--contrib/restricted/boost/any/ya.make2
-rw-r--r--contrib/restricted/boost/array/ya.make2
-rw-r--r--contrib/restricted/boost/asio/ya.make2
-rw-r--r--contrib/restricted/boost/assert/ya.make2
-rw-r--r--contrib/restricted/boost/atomic/ya.make2
-rw-r--r--contrib/restricted/boost/bimap/ya.make2
-rw-r--r--contrib/restricted/boost/bind/ya.make2
-rw-r--r--contrib/restricted/boost/chrono/ya.make2
-rw-r--r--contrib/restricted/boost/concept_check/ya.make2
-rw-r--r--contrib/restricted/boost/config/ya.make2
-rw-r--r--contrib/restricted/boost/container/ya.make2
-rw-r--r--contrib/restricted/boost/container_hash/ya.make2
-rw-r--r--contrib/restricted/boost/context/ya.make2
-rw-r--r--contrib/restricted/boost/conversion/ya.make2
-rw-r--r--contrib/restricted/boost/core/ya.make2
-rw-r--r--contrib/restricted/boost/coroutine/ya.make2
-rw-r--r--contrib/restricted/boost/crc/ya.make2
-rw-r--r--contrib/restricted/boost/date_time/ya.make2
-rw-r--r--contrib/restricted/boost/describe/ya.make2
-rw-r--r--contrib/restricted/boost/detail/ya.make2
-rw-r--r--contrib/restricted/boost/dynamic_bitset/ya.make2
-rw-r--r--contrib/restricted/boost/endian/ya.make2
-rw-r--r--contrib/restricted/boost/exception/ya.make2
-rw-r--r--contrib/restricted/boost/filesystem/ya.make2
-rw-r--r--contrib/restricted/boost/foreach/ya.make2
-rw-r--r--contrib/restricted/boost/format/ya.make2
-rw-r--r--contrib/restricted/boost/function/ya.make2
-rw-r--r--contrib/restricted/boost/function_types/ya.make2
-rw-r--r--contrib/restricted/boost/functional/ya.make2
-rw-r--r--contrib/restricted/boost/fusion/ya.make2
-rw-r--r--contrib/restricted/boost/graph/ya.make2
-rw-r--r--contrib/restricted/boost/icl/ya.make2
-rw-r--r--contrib/restricted/boost/integer/ya.make2
-rw-r--r--contrib/restricted/boost/interprocess/ya.make2
-rw-r--r--contrib/restricted/boost/intrusive/ya.make2
-rw-r--r--contrib/restricted/boost/io/ya.make2
-rw-r--r--contrib/restricted/boost/iostreams/ya.make2
-rw-r--r--contrib/restricted/boost/iterator/ya.make2
-rw-r--r--contrib/restricted/boost/lambda/ya.make2
-rw-r--r--contrib/restricted/boost/lexical_cast/ya.make2
-rw-r--r--contrib/restricted/boost/locale/ya.make2
-rw-r--r--contrib/restricted/boost/math/ya.make2
-rw-r--r--contrib/restricted/boost/move/ya.make2
-rw-r--r--contrib/restricted/boost/mp11/ya.make2
-rw-r--r--contrib/restricted/boost/mpl/ya.make2
-rw-r--r--contrib/restricted/boost/multi_array/ya.make2
-rw-r--r--contrib/restricted/boost/multi_index/ya.make2
-rw-r--r--contrib/restricted/boost/numeric_conversion/ya.make2
-rw-r--r--contrib/restricted/boost/optional/ya.make2
-rw-r--r--contrib/restricted/boost/parameter/ya.make2
-rw-r--r--contrib/restricted/boost/phoenix/ya.make2
-rw-r--r--contrib/restricted/boost/pool/ya.make2
-rw-r--r--contrib/restricted/boost/predef/ya.make2
-rw-r--r--contrib/restricted/boost/preprocessor/ya.make2
-rw-r--r--contrib/restricted/boost/program_options/ya.make2
-rw-r--r--contrib/restricted/boost/property_map/ya.make2
-rw-r--r--contrib/restricted/boost/property_tree/ya.make2
-rw-r--r--contrib/restricted/boost/proto/ya.make2
-rw-r--r--contrib/restricted/boost/random/ya.make2
-rw-r--r--contrib/restricted/boost/range/ya.make2
-rw-r--r--contrib/restricted/boost/ratio/ya.make2
-rw-r--r--contrib/restricted/boost/rational/ya.make2
-rw-r--r--contrib/restricted/boost/regex/ya.make2
-rw-r--r--contrib/restricted/boost/scope/ya.make2
-rw-r--r--contrib/restricted/boost/scope_exit/ya.make2
-rw-r--r--contrib/restricted/boost/serialization/ya.make2
-rw-r--r--contrib/restricted/boost/smart_ptr/ya.make2
-rw-r--r--contrib/restricted/boost/spirit/ya.make2
-rw-r--r--contrib/restricted/boost/static_assert/ya.make2
-rw-r--r--contrib/restricted/boost/system/ya.make2
-rw-r--r--contrib/restricted/boost/thread/ya.make2
-rw-r--r--contrib/restricted/boost/throw_exception/ya.make2
-rw-r--r--contrib/restricted/boost/tokenizer/ya.make2
-rw-r--r--contrib/restricted/boost/tti/ya.make2
-rw-r--r--contrib/restricted/boost/tuple/ya.make2
-rw-r--r--contrib/restricted/boost/type_index/ya.make2
-rw-r--r--contrib/restricted/boost/type_traits/ya.make2
-rw-r--r--contrib/restricted/boost/typeof/ya.make2
-rw-r--r--contrib/restricted/boost/utility/ya.make2
-rw-r--r--contrib/restricted/boost/variant/ya.make2
-rw-r--r--contrib/restricted/boost/variant2/ya.make2
-rw-r--r--contrib/restricted/boost/winapi/ya.make2
-rw-r--r--contrib/restricted/boost/xpressive/ya.make2
-rwxr-xr-xya20
-rwxr-xr-xyql/essentials/docs/scripts/doc_upgrade_arc.sh3
-rwxr-xr-xyql/essentials/docs/scripts/doc_upgrade_git.sh3
-rw-r--r--yql/essentials/tests/sql/minirun/part1/canondata/result.json6
-rw-r--r--yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h577
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/result.json30
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockFind_/results.txt134
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockRemove_/results.txt100
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockReplace_/results.txt124
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockStrip_/results.txt56
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockUnicode_/results.txt220
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt130
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt164
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt218
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt64
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_UnicodeCodePoint_/results.txt120
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt384
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in2
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.sql12
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in5
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.sql12
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.sql14
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in6
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.sql8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in7
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.sql18
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Find.in2
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Find.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Find.sql20
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Remove.in5
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Remove.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql12
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Replace.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql18
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Strip.in6
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Strip.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql10
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in14
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql5
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in7
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in.attr8
-rw-r--r--yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.sql6
-rw-r--r--yt/cpp/mapreduce/client/operation.cpp6
-rw-r--r--yt/cpp/mapreduce/interface/operation.h6
-rw-r--r--yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp6
-rw-r--r--yt/yql/providers/yt/lib/res_pull/table_limiter.cpp7
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp42
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_helpers.cpp25
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_optimize.cpp4
-rw-r--r--yt/yql/tests/sql/suites/limit/dynamic_limit_offset_overflow.sql14
-rw-r--r--yt/yql/tests/sql/suites/select/sample_limit_recordindex.cfg2
-rw-r--r--yt/yql/tests/sql/suites/select/sample_limit_recordindex.sql12
-rw-r--r--yt/yt/client/kafka/requests.cpp4
-rw-r--r--yt/yt/client/kafka/requests.h8
-rw-r--r--yt/yt/core/bus/client.h5
-rw-r--r--yt/yt/core/bus/server.h8
-rw-r--r--yt/yt/core/bus/tcp/client.cpp10
-rw-r--r--yt/yt/core/bus/tcp/config.cpp14
-rw-r--r--yt/yt/core/bus/tcp/config.h41
-rw-r--r--yt/yt/core/bus/tcp/connection.cpp16
-rw-r--r--yt/yt/core/bus/tcp/connection.h4
-rw-r--r--yt/yt/core/bus/tcp/public.h6
-rw-r--r--yt/yt/core/bus/tcp/server.cpp34
-rw-r--r--yt/yt/core/concurrency/arcadia_interop-inl.h68
-rw-r--r--yt/yt/core/concurrency/arcadia_interop.h23
-rw-r--r--yt/yt/core/concurrency/unittests/arcadia_interop_ut.cpp137
-rw-r--r--yt/yt/core/concurrency/unittests/ya.make2
262 files changed, 4088 insertions, 2351 deletions
diff --git a/build/conf/licenses.json b/build/conf/licenses.json
index 792f8e829b..42627fda61 100644
--- a/build/conf/licenses.json
+++ b/build/conf/licenses.json
@@ -4,7 +4,6 @@
"AFL-2.0",
"Amazon-SL",
"APSL-1.0",
- "Artistic-2.0",
"ASM-BSD-3-Clause",
"BCL",
"Bison-Exception",
@@ -39,7 +38,6 @@
"CC-BY-SA-4.0",
"CDDL",
"CECILL-B",
- "ClArtistic",
"DSO-1.1",
"Elastic-License-2.0",
"FSFUL",
@@ -159,6 +157,7 @@
"AGPL-3.0-or-later",
"Artistic-1.0",
"Artistic-1.0-Perl",
+ "ClArtistic",
"confluent-community-1.0",
"Moderne-Source-Available-License"
]
@@ -180,6 +179,7 @@
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"APSL-2.0",
+ "Artistic-2.0",
"Beerware",
"blessing",
"Brian-Gladman-3-Clause",
@@ -213,6 +213,7 @@
"Cmu-Computing-Services",
"CUP-Parser",
"curl",
+ "Custom-clarified-artistic-proofread",
"Custom-eigen",
"Custom-fft2d",
"Custom-fft4g",
diff --git a/build/conf/linkers/ld.conf b/build/conf/linkers/ld.conf
index 2aa0f93b60..79006c21ab 100644
--- a/build/conf/linkers/ld.conf
+++ b/build/conf/linkers/ld.conf
@@ -354,13 +354,6 @@ _LD_LINK_LIB_EXTRA_INPUT=
_LD_TAIL_LINK_LIB=$AUTO_INPUT $_LD_LINK_LIB_EXTRA_INPUT ${hide;kv:"p AR"} $TOOLCHAIN_ENV ${hide;kv:"pc light-red"} ${hide;kv:"show_out"}
_LD_ARCHIVER=$YMAKE_PYTHON ${input:"build/scripts/link_lib.py"} ${quo:AR_TOOL} $AR_TYPE $_LD_LLVM_AR_FORMAT $ARCADIA_BUILD_ROOT $_LD_AR_PLUGIN -- $_LD_ARCHIVER_KV_PLUGIN --
-when ($MAPSMOBI_BUILD_TARGET == "yes") {
- _LD_ARCHIVER+= "no-openssl3"
-}
-otherwise {
- _LD_ARCHIVER+= "enable-openssl3"
-}
-
_LD_LIB_GENERATE_MF=$GENERATE_MF &&
when ($TIDY == "yes") {
_LD_ARCHIVER=$YMAKE_PYTHON ${input:"build/scripts/clang_tidy_arch.py"} --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --output-file
diff --git a/build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py b/build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py
index 4eb8013a91..001faecaa3 100644
--- a/build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py
+++ b/build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py
@@ -145,6 +145,8 @@ class FilesCombiner(object):
'gnu', # llvm_ar_format, used only if arch_type == 'LLVM_AR'
opts.parsed_args.project_binary_dir,
'None', # plugin. Unused for now
+ '--', # for plugins. Unused for now
+ '--',
]
# the remaining archiving cmd args are [output, .. input .. ]
diff --git a/build/export_generators/cmake/generator.toml b/build/export_generators/cmake/generator.toml
index 9343bd58cb..b25cf88c35 100644
--- a/build/export_generators/cmake/generator.toml
+++ b/build/export_generators/cmake/generator.toml
@@ -209,12 +209,12 @@ copy=["cmake/FindJNITarget.cmake"]
add_values=[{attr="includes", values=["cmake/FindJNITarget.cmake"]}]
[[rules]]
-attrs=["target_commands-macro=run_antlr"]
+attrs=["custom_runs-command=run_antlr"]
copy=["cmake/antlr.cmake"]
add_values=[{attr="includes", values=["cmake/antlr.cmake"]}]
[[rules]]
-attrs=["target_commands-macro=run_antlr4"]
+attrs=["custom_runs-command=run_antlr4"]
copy=["cmake/antlr4.cmake"]
add_values=[{attr="includes", values=["cmake/antlr4.cmake"]}]
diff --git a/build/export_generators/cmake/target_commands.jinja b/build/export_generators/cmake/target_commands.jinja
index ebc1ef6c13..6d28dce80d 100644
--- a/build/export_generators/cmake/target_commands.jinja
+++ b/build/export_generators/cmake/target_commands.jinja
@@ -21,7 +21,6 @@
{%- if current_target.custom_runs|length -%}
{%- for custom_run in current_target.custom_runs %}
{%- set first_arg = custom_run.command|first %}
-{%- set tail_args = custom_run.command|slice(1, custom_run.command|length - 1) %}
{%- if (first_arg == "run_antlr") or (first_arg == "run_antlr4") %}
{{ first_arg }}(
{%- if custom_run.outputs|length %}
@@ -34,14 +33,16 @@
WORKING_DIRECTORY
{{ custom_run.cwd }}
{%- endif -%}
-{%- if tail_args|length %}
- ANTLR_ARGS
-{%- for tail_arg in tail_args %}
- {{ tail_arg }}
+{%- if custom_run.command|length > 1 %}
+ ANTLER_ARGS
+{%- for arg in custom_run.command -%}
+{%- if not loop.first %}
+ {{ arg }}
+{%- endif -%}
{%- endfor -%}
-{%- endif -%}
+{%- endif %}
)
-{%- else %}
+{% else %}
add_custom_command(
{%- if custom_run.outputs|length %}
OUTPUT
diff --git a/build/mapping.conf.json b/build/mapping.conf.json
index f7754c5849..7340df7db4 100644
--- a/build/mapping.conf.json
+++ b/build/mapping.conf.json
@@ -1,6 +1,7 @@
{
"bottles": {},
"resources": {
+ "8018811524": "https://devtools-registry.s3.yandex.net/8018811524",
"6277415836": "https://devtools-registry.s3.yandex.net/6277415836",
"2214720943": "https://devtools-registry.s3.yandex.net/2214720943",
"2214542408": "https://devtools-registry.s3.yandex.net/2214542408",
@@ -1065,8 +1066,11 @@
"7512103615": "https://devtools-registry.s3.yandex.net/7512103615",
"7324464594": "https://devtools-registry.s3.yandex.net/7324464594",
"7654921682": "https://devtools-registry.s3.yandex.net/7654921682",
+ "8013116004": "https://devtools-registry.s3.yandex.net/8013116004",
+ "8013130168": "https://devtools-registry.s3.yandex.net/8013130168",
"7487656957": "https://devtools-registry.s3.yandex.net/7487656957",
"7458707245": "https://devtools-registry.s3.yandex.net/7458707245",
+ "8013150302": "https://devtools-registry.s3.yandex.net/8013150302",
"7414146467": "https://devtools-registry.s3.yandex.net/7414146467",
"7654793679": "https://devtools-registry.s3.yandex.net/7654793679",
"7487672728": "https://devtools-registry.s3.yandex.net/7487672728",
@@ -1587,6 +1591,7 @@
"5545691160": "devtools/ya/test/programs/test_tool/bin/test_tool for linux",
"5559524010": "devtools/ya/test/programs/test_tool/bin/test_tool for linux",
"5572005924": "devtools/ya/test/programs/test_tool/bin/test_tool for linux",
+ "8018811524": "devtools/ya/test/programs/test_tool/bin/test_tool for linux",
"5675381622": "devtools/ya/test/programs/test_tool/bin/test_tool for linux",
"5683487438": "devtools/ya/test/programs/test_tool/bin/test_tool for linux",
"5707396874": "devtools/ya/test/programs/test_tool/bin/test_tool for linux",
@@ -2292,8 +2297,11 @@
"7512103615": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/29fcd2aa-e0b5-481e-83c8-b7ff5e0157c9/yfm-docs.tar",
"7324464594": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/32cc8c74-decd-44a8-bc8c-f8f0d7edfffe/yfm-docs.tar",
"7654921682": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/33b2cf15-eb2e-44b8-a074-0c6f60f97a04/yfm-docs.tar",
+ "8013116004": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/33d7c3cf-e76f-40cb-9e98-59084b60928c/yfm-docs.tar",
+ "8013130168": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/47070d89-f0a5-4aed-a017-3bd4f9d1518f/yfm-docs.tar",
"7487656957": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/4b747fb6-2d4e-4a7b-bbed-abb9a1e21761/yfm-docs.tar",
"7458707245": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/4e7df89f-3762-4eba-ba73-562ccaeae548/yfm-docs.tar",
+ "8013150302": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/5af5fdb2-854a-4889-8d34-beb85f4a7c30/yfm-docs.tar",
"7414146467": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/66167d72-07fa-444c-8493-dea0a39d034e/yfm-docs.tar",
"7654793679": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/68b3d50f-8068-40b2-8e3c-96653135fcb5/yfm-docs.tar",
"7487672728": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/68c62602-dfe7-4bea-873f-cae85e13071f/yfm-docs.tar",
diff --git a/build/platform/test_tool/host.ya.make.inc b/build/platform/test_tool/host.ya.make.inc
index bb9b3abec6..4399fb5d13 100644
--- a/build/platform/test_tool/host.ya.make.inc
+++ b/build/platform/test_tool/host.ya.make.inc
@@ -1,12 +1,12 @@
IF (HOST_OS_DARWIN AND HOST_ARCH_X86_64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994789266)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018525488)
ELSEIF (HOST_OS_DARWIN AND HOST_ARCH_ARM64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994784587)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018523316)
ELSEIF (HOST_OS_LINUX AND HOST_ARCH_X86_64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994797288)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018529985)
ELSEIF (HOST_OS_LINUX AND HOST_ARCH_AARCH64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994780427)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018521599)
ELSEIF (HOST_OS_WINDOWS AND HOST_ARCH_X86_64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994793586)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018527620)
ENDIF()
diff --git a/build/platform/test_tool/host_os.ya.make.inc b/build/platform/test_tool/host_os.ya.make.inc
index a43a6004b0..1b8adbc03a 100644
--- a/build/platform/test_tool/host_os.ya.make.inc
+++ b/build/platform/test_tool/host_os.ya.make.inc
@@ -1,12 +1,12 @@
IF (HOST_OS_DARWIN AND HOST_ARCH_X86_64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994642530)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018808572)
ELSEIF (HOST_OS_DARWIN AND HOST_ARCH_ARM64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994640050)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018807025)
ELSEIF (HOST_OS_LINUX AND HOST_ARCH_X86_64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994647367)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018811524)
ELSEIF (HOST_OS_LINUX AND HOST_ARCH_AARCH64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994637838)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018805118)
ELSEIF (HOST_OS_WINDOWS AND HOST_ARCH_X86_64)
- DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994644702)
+ DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018809911)
ENDIF()
diff --git a/build/plugins/_common.py b/build/plugins/_common.py
index 7925543cd2..e116d158f6 100644
--- a/build/plugins/_common.py
+++ b/build/plugins/_common.py
@@ -1,5 +1,4 @@
import six
-import sys
import hashlib
import base64
@@ -61,15 +60,6 @@ def tobuilddir(fname):
return fname
-def before(s, ss):
- p = s.find(ss)
-
- if p == -1:
- return s
-
- return s[:p]
-
-
def sort_by_keywords(keywords, args):
flat = []
res = {}
@@ -115,30 +105,10 @@ def resolve_common_const(path):
return path
-def resolve_to_abs_path(path, source_root, build_root):
- if path.startswith('$S') and source_root is not None:
- return path.replace('$S', source_root, 1)
- if path.startswith('$B') and build_root is not None:
- return path.replace('$B', build_root, 1)
- return path
-
-
-def resolve_to_ymake_path(path):
- return resolve_to_abs_path(path, '${ARCADIA_ROOT}', '${ARCADIA_BUILD_ROOT}')
-
-
def get(fun, num):
return fun()[num][0]
-def make_tuples(arg_list):
- def tpl():
- for x in arg_list:
- yield (x, [])
-
- return list(tpl())
-
-
def resolve_includes(unit, src, paths):
return unit.resolve_include([src] + paths) if paths else []
@@ -169,13 +139,6 @@ def skip_build_root(x):
return x
-def get_interpreter_path():
- interpreter_path = [sys.executable]
- if 'ymake' in interpreter_path[0]:
- interpreter_path.append('--python')
- return interpreter_path
-
-
def filter_out_by_keyword(test_data, keyword):
def _iterate():
i = 0
diff --git a/build/plugins/nots.py b/build/plugins/nots.py
index e3f8ab9f0a..7d7f151ae1 100644
--- a/build/plugins/nots.py
+++ b/build/plugins/nots.py
@@ -2,6 +2,7 @@ import os
from enum import auto, StrEnum
from typing import Any, Literal, TYPE_CHECKING
+
# noinspection PyUnresolvedReferences
import ymake
diff --git a/build/scripts/link_exe.py b/build/scripts/link_exe.py
index 89695f2b98..de5e215ab5 100644
--- a/build/scripts/link_exe.py
+++ b/build/scripts/link_exe.py
@@ -27,9 +27,6 @@ def get_leaks_suppressions(cmd):
return supp, newcmd
-MUSL_LIBS = '-lc', '-lcrypt', '-ldl', '-lm', '-lpthread', '-lrt', '-lutil'
-
-
CUDA_LIBRARIES = {
'-lcublas_static': '-lcublas',
'-lcublasLt_static': '-lcublasLt',
@@ -258,14 +255,6 @@ def fix_sanitize_flag(cmd, opts):
return flags
-def fix_cmd_for_musl(cmd):
- flags = []
- for flag in cmd:
- if flag not in MUSL_LIBS:
- flags.append(flag)
- return flags
-
-
def fix_cmd_for_dynamic_cuda(cmd):
flags = []
for flag in cmd:
@@ -325,7 +314,6 @@ def fix_blas_resolving(cmd):
def parse_args(args):
parser = optparse.OptionParser()
parser.disable_interspersed_args()
- parser.add_option('--musl', action='store_true')
parser.add_option('--custom-step')
parser.add_option('--python')
parser.add_option('--source-root')
@@ -364,9 +352,6 @@ if __name__ == '__main__':
cmd = fix_blas_resolving(args)
cmd = fix_py2(cmd)
cmd = remove_excessive_flags(cmd)
- if opts.musl:
- cmd = fix_cmd_for_musl(cmd)
-
cmd = fix_sanitize_flag(cmd, opts)
if opts.dynamic_cuda:
diff --git a/build/scripts/link_lib.py b/build/scripts/link_lib.py
index b792540fd0..5db51d7c69 100644
--- a/build/scripts/link_lib.py
+++ b/build/scripts/link_lib.py
@@ -25,9 +25,8 @@ class Opts(object):
self.llvm_ar_format = args[2]
self.build_root = args[3]
self.plugin = args[4]
- self.enable_openssl3 = args[5]
- self.output = args[6]
- auto_input = args[7:]
+ self.output = args[5]
+ auto_input = args[6:]
self.need_modify = False
self.extra_args = []
@@ -66,68 +65,6 @@ def get_opts(args):
return Opts(args)
-def run(*args):
- return subprocess.check_output(list(args), shell=False).strip()
-
-
-def gen_renames_1(d):
- for l in d.split('\n'):
- l = l.strip()
-
- if ' ' in l:
- yield l.split(' ')[-1]
-
-
-def have_prefix(l, p):
- for x in l:
- if not x.startswith(p):
- return False
-
- return True
-
-
-def gen_renames_2(p, d):
- l = list(gen_renames_1(d))
- a = have_prefix(l, '_')
-
- for s in l:
- if 'asan_globals' in s:
- continue
-
- if s in ['HMAC', 'SHA1', 'SHA256', 'SHA256', 'SHA512', 'RC4', 'MD5', 'SHA384']:
- continue
-
- if a and s[1:] in ['HMAC', 'SHA1', 'SHA256', 'SHA256', 'SHA512', 'RC4', 'MD5', 'SHA384']:
- continue
-
- if a:
- yield s + ' _' + p + s[1:]
- else:
- yield s + ' ' + p + s
-
-
-def gen_renames(p, d):
- return '\n'.join(gen_renames_2(p, d)).strip() + '\n'
-
-
-def rename_syms(where, ret):
- p = 'v1_'
-
- # find symbols to rename
- syms = run(where + 'llvm-nm', '--extern-only', '--defined-only', '-A', ret)
-
- # prepare rename plan
- renames = gen_renames(p, syms)
- tmp = ret + '.syms'
-
- with open(tmp, 'w') as f:
- f.write(renames)
-
- # rename symbols
- run(where + 'llvm-objcopy', '--redefine-syms=' + tmp, ret)
- os.unlink(tmp)
-
-
if __name__ == "__main__":
opts = get_opts(sys.argv[1:])
@@ -176,8 +113,5 @@ if __name__ == "__main__":
if exit_code != 0:
raise Exception('{0} returned non-zero exit code {1}. Stop.'.format(' '.join(cmd), exit_code))
- if opts.enable_openssl3 != 'no-openssl3' and os.path.basename(opts.output) in ['libcontrib-libs-openssl.a', 'liblibs-openssl-crypto.a']:
- rename_syms(os.path.dirname(opts.archiver) + '/', opts.output)
-
if opts.ar_plugin:
subprocess.check_call([sys.executable, opts.ar_plugin, opts.output, '--'] + sys.argv[1:])
diff --git a/build/sysincl/linux-headers.yml b/build/sysincl/linux-headers.yml
index 27a924b0a6..f26a0b2d6e 100644
--- a/build/sysincl/linux-headers.yml
+++ b/build/sysincl/linux-headers.yml
@@ -857,6 +857,7 @@
- linux/prctl.h
- linux/psample.h
- linux/psci.h
+ - linux/psp-dbc.h
- linux/psp-sev.h
- linux/ptp_clock.h
- linux/ptrace.h
diff --git a/build/ymake.core.conf b/build/ymake.core.conf
index e29b47c469..34a2f5dbb2 100644
--- a/build/ymake.core.conf
+++ b/build/ymake.core.conf
@@ -770,7 +770,6 @@ module _BASE_UNIT: _BARE_UNIT {
when ($MUSL == "yes") {
CFLAGS += -D_musl_
LINK_DYN_LIB_FLAGS += --musl
- LINK_SCRIPT_EXE_FLAGS += --musl
PEERDIR+=contrib/libs/musl/include
}
@@ -4568,10 +4567,10 @@ macro RUN_PYTHON3(ScriptPath, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], O
}
# tag:java-specific
-macro _RUN_ANTLR_BASE(IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], TOOL[], STDOUT="", STDOUT_NOAUTO="", CWD="", JAR[], SEM="run_java", SEM_ARGS_PREFIX="", ENV[], HIDE_OUTPUT?"stderr2stdout":"stdout2stderr", Args...) {
+macro _RUN_ANTLR_BASE(IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], TOOL[], STDOUT="", STDOUT_NOAUTO="", CWD="", JAR[], SEM="run_java", ENV[], HIDE_OUTPUT?"stderr2stdout":"stdout2stderr", Args...) {
PEERDIR(build/platform/java/jdk $JDK_RESOURCE_PEERDIR)
.CMD=${cwd:CWD} ${env:ENV} $YMAKE_PYTHON ${input;pre=build/scripts/:HIDE_OUTPUT.py} $JDK_RESOURCE/bin/java $JAR $Args ${hide;tool:TOOL} ${hide;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;noauto;output:STDOUT_NOAUTO} ${hide;kv:"p JV"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
- .SEM=custom_runs-ITEM && custom_runs-depends ${input:IN} && custom_runs-command $SEM $Args && custom_runs-outputs ${output:OUT} ${noauto;output:OUT_NOAUTO} ${pre=&& custom_runs-cwd :CWD}
+ .SEM=custom_runs-ITEM && custom_runs-depends ${input:IN} && custom_runs-command $SEM && custom_runs-command $Args && custom_runs-outputs ${output:OUT} ${noauto;output:OUT_NOAUTO} ${pre=&& custom_runs-cwd :CWD}
}
### @usage: FROM_SANDBOX([FILE] resource_id [AUTOUPDATED script] [RENAME <resource files>] OUT_[NOAUTO] <output files> [EXECUTABLE] [OUTPUT_INCLUDES <include files>] [INDUCED_DEPS $VARs...])
@@ -4930,14 +4929,14 @@ macro ASM_PREINCLUDE(PREINCLUDES...) {
###
### Macro to invoke ANTLR3 generator (general case)
macro RUN_ANTLR(IN[], IN_NOPARSE[], OUT[], OUT_NOAUTO[], OUTPUT_INCLUDES[], INDUCED_DEPS[], CWD="", Args...) {
- _RUN_ANTLR_BASE($Args IN $IN IN_NOPARSE $IN_NOPARSE OUT $OUT OUT_NOAUTO $OUT_NOAUTO OUTPUT_INCLUDES $OUTPUT_INCLUDES INDUCED_DEPS $INDUCED_DEPS ${pre=CWD :CWD} JAR -jar ${input:"contrib/java/antlr/antlr3/antlr.jar"} SEM run_antlr SEM_ARGS_PREFIX ANTLER_ARGS)
+ _RUN_ANTLR_BASE($Args IN $IN IN_NOPARSE $IN_NOPARSE OUT $OUT OUT_NOAUTO $OUT_NOAUTO OUTPUT_INCLUDES $OUTPUT_INCLUDES INDUCED_DEPS $INDUCED_DEPS ${pre=CWD :CWD} JAR -jar ${input:"contrib/java/antlr/antlr3/antlr.jar"} SEM run_antlr)
}
### @usage: RUN_ANTLR4(Args...)
###
### Macro to invoke ANTLR4 generator (general case)
macro RUN_ANTLR4(IN[], IN_NOPARSE[], OUT[], OUT_NOAUTO[], OUTPUT_INCLUDES[], INDUCED_DEPS[], CWD="", Args...) {
- _RUN_ANTLR_BASE($Args IN $IN IN_NOPARSE $IN_NOPARSE OUT $OUT OUT_NOAUTO $OUT_NOAUTO OUTPUT_INCLUDES $OUTPUT_INCLUDES INDUCED_DEPS $INDUCED_DEPS ${pre=CWD :CWD} JAR -jar ${input:"contrib/java/antlr/antlr4/antlr.jar"} SEM run_antlr4 SEM_ARGS_PREFIX ANTLER_ARGS)
+ _RUN_ANTLR_BASE($Args IN $IN IN_NOPARSE $IN_NOPARSE OUT $OUT OUT_NOAUTO $OUT_NOAUTO OUTPUT_INCLUDES $OUTPUT_INCLUDES INDUCED_DEPS $INDUCED_DEPS ${pre=CWD :CWD} JAR -jar ${input:"contrib/java/antlr/antlr4/antlr.jar"} SEM run_antlr4)
}
_ANTLR4_LISTENER_GRAMMAR=-listener
diff --git a/contrib/libs/breakpad/microdump_stackwalk/ya.make b/contrib/libs/breakpad/microdump_stackwalk/ya.make
index 6fb8c0572d..f58cbc68f9 100644
--- a/contrib/libs/breakpad/microdump_stackwalk/ya.make
+++ b/contrib/libs/breakpad/microdump_stackwalk/ya.make
@@ -16,7 +16,7 @@ LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
VERSION(2022.07.12)
PEERDIR(
- contrib/libs/breakpad/src/third_party/libdisasm
+ contrib/libs/breakpad/src
)
ADDINCL(
@@ -36,36 +36,7 @@ SRCDIR(contrib/libs/breakpad/src)
SRCS(
common/path_helper.cc
- processor/basic_code_modules.cc
- processor/basic_source_line_resolver.cc
- processor/call_stack.cc
- processor/cfi_frame_info.cc
- processor/convert_old_arm64_context.cc
- processor/disassembler_x86.cc
- processor/dump_context.cc
- processor/dump_object.cc
- processor/logging.cc
- processor/microdump.cc
- processor/microdump_processor.cc
processor/microdump_stackwalk.cc
- processor/pathname_stripper.cc
- processor/process_state.cc
- processor/simple_symbol_supplier.cc
- processor/source_line_resolver_base.cc
- processor/stack_frame_cpu.cc
- processor/stack_frame_symbolizer.cc
- processor/stackwalk_common.cc
- processor/stackwalker.cc
- processor/stackwalker_address_list.cc
- processor/stackwalker_amd64.cc
- processor/stackwalker_arm.cc
- processor/stackwalker_arm64.cc
- processor/stackwalker_mips.cc
- processor/stackwalker_ppc.cc
- processor/stackwalker_ppc64.cc
- processor/stackwalker_sparc.cc
- processor/stackwalker_x86.cc
- processor/tokenize.cc
)
END()
diff --git a/contrib/libs/breakpad/minidump_stackwalk/ya.make b/contrib/libs/breakpad/minidump_stackwalk/ya.make
index 7a1a334307..60aff38ff9 100644
--- a/contrib/libs/breakpad/minidump_stackwalk/ya.make
+++ b/contrib/libs/breakpad/minidump_stackwalk/ya.make
@@ -16,7 +16,7 @@ LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
VERSION(2022.07.12)
PEERDIR(
- contrib/libs/breakpad/src/third_party/libdisasm
+ contrib/libs/breakpad/src
)
ADDINCL(
@@ -36,41 +36,7 @@ SRCDIR(contrib/libs/breakpad/src)
SRCS(
common/path_helper.cc
- processor/basic_code_modules.cc
- processor/basic_source_line_resolver.cc
- processor/call_stack.cc
- processor/cfi_frame_info.cc
- processor/convert_old_arm64_context.cc
- processor/disassembler_x86.cc
- processor/dump_context.cc
- processor/dump_object.cc
- processor/exploitability.cc
- processor/exploitability_linux.cc
- processor/exploitability_win.cc
- processor/logging.cc
- processor/minidump.cc
- processor/minidump_processor.cc
processor/minidump_stackwalk.cc
- processor/pathname_stripper.cc
- processor/proc_maps_linux.cc
- processor/process_state.cc
- processor/simple_symbol_supplier.cc
- processor/source_line_resolver_base.cc
- processor/stack_frame_cpu.cc
- processor/stack_frame_symbolizer.cc
- processor/stackwalk_common.cc
- processor/stackwalker.cc
- processor/stackwalker_address_list.cc
- processor/stackwalker_amd64.cc
- processor/stackwalker_arm.cc
- processor/stackwalker_arm64.cc
- processor/stackwalker_mips.cc
- processor/stackwalker_ppc.cc
- processor/stackwalker_ppc64.cc
- processor/stackwalker_sparc.cc
- processor/stackwalker_x86.cc
- processor/symbolic_constants_win.cc
- processor/tokenize.cc
)
END()
diff --git a/contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt b/contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt
index 384aae6f5d..75fd1567b3 100644
--- a/contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt
+++ b/contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt
@@ -547,6 +547,146 @@ included version has been heavily modified by Rich Felker in 2012, in
the interests of size, simplicity, and namespace cleanliness.
+====================Custom-clarified-artistic-proofread====================
+ The "Clarified Artistic License"
+
+ Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection of files
+ created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been
+ modified, or has been modified in accordance with the wishes
+ of the Copyright Holder as specified below.
+
+ "Copyright Holder" is whoever is named in the copyright or
+ copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing
+ this Package.
+
+ "Distribution fee" is a fee you charge for providing a copy of this
+ Package to another party.
+
+ "Freely Available" means that no fee is charged for the right to use
+ the item, though there may be fees involved in handling the item.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain, or those made Freely Available, or from
+the Copyright Holder. A Package modified in such a way shall still be
+considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
+
+ a) place your modifications in the Public Domain or otherwise make them
+ Freely Available, such as by posting said modifications to Usenet or
+ an equivalent medium, or placing the modifications on a major archive
+ site allowing unrestricted access to them, or by allowing the Copyright
+ Holder to include your modifications in the Standard Version of the
+ Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict
+ with standard executables, which must also be provided, and provide
+ a separate manual page for each non-standard executable that clearly
+ documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+ e) permit and encourge anyone who receives a copy of the modified Package
+ permission to make your modifications Freely Available in some specific
+ way.
+
+4. You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files,
+ together with instructions (in the manual page or equivalent) on where
+ to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of
+ the Package with your modifications.
+
+ c) give non-standard executables non-standard names, and clearly
+ document the differences in manual pages (or equivalent), together
+ with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+ e) offer the machine-readable source of the Package, with your
+ modifications, by mail order.
+
+5. You may charge a distribution fee for any distribution of this Package.
+If you offer support for this Package, you may charge any fee you choose
+for that support. You may not charge a license fee for the right to use
+this Package itself. You may distribute this Package in aggregate with
+other (possibly commercial and possibly nonfree) programs as part of a
+larger (possibly commercial and possibly nonfree) software distribution,
+and charge license fees for other parts of that software distribution,
+provided that you do not advertise this Package as a product of your own.
+If the Package includes an interpreter, You may embed this Package's
+interpreter within an executable of yours (by linking); this shall be
+construed as a mere form of aggregation, provided that the complete
+Standard Version of the interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as
+output from the programs of this Package do not automatically fall
+under the copyright of this Package, but belong to whoever generated
+them, and may be sold commercially, and may be aggregated with this
+Package. If such scripts or library files are aggregated with this
+Package via the so-called "undump" or "unexec" methods of producing a
+binary executable image, then distribution of such an image shall
+neither be construed as a distribution of this Package nor shall it
+fall under the restrictions of Paragraphs 3 and 4, provided that you do
+not represent such an executable image as a Standard Version of this
+Package.
+
+7. C subroutines (or comparably compiled subroutines in other
+languages) supplied by you and linked into this Package in order to
+emulate subroutines and variables of the language defined by this
+Package shall not be considered part of this Package, but are the
+equivalent of input as in Paragraph 6, provided these subroutines do
+not change the language in any way that would cause it to fail the
+regression tests for the language.
+
+8. Aggregation of the Standard Version of the Package with a commercial
+distribution is always permitted provided that the use of this Package is
+embedded; that is, when no overt attempt is made to make this Package's
+interfaces visible to the end user of the commercial distribution.
+Such use shall not be construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+ The End
+
+====================Custom-clarified-artistic-proofread====================
+License: Clarified-Artistic
+License File: LICENSE
+
+
====================FSFAP====================
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/contrib/libs/breakpad/src/third_party/libdisasm/.yandex_meta/licenses.list.txt b/contrib/libs/breakpad/src/third_party/libdisasm/.yandex_meta/licenses.list.txt
deleted file mode 100644
index a608afd8eb..0000000000
--- a/contrib/libs/breakpad/src/third_party/libdisasm/.yandex_meta/licenses.list.txt
+++ /dev/null
@@ -1,800 +0,0 @@
-====================APSL-2.0====================
-@APPLE_LICENSE_HEADER_START@
-
-This file contains Original Code and/or Modifications of Original Code
-as defined in and that are subject to the Apple Public Source License
-Version 2.0 (the 'License'). You may not use this file except in
-compliance with the License. Please obtain a copy of the License at
-http://www.opensource.apple.com/apsl/ and read it before using this
-file.
-
-The Original Code and all software distributed under the License are
-distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
-EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
-INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
-Please see the License for the specific language governing rights and
-limitations under the License.
-
-@APPLE_LICENSE_HEADER_END@
-
-
-====================BSD-3-Clause====================
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-====================BSD-3-Clause====================
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-====================BSD-4-Clause-UC====================
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
- must display the following acknowledgement:
- This product includes software developed by the University of
- California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-====================COPYRIGHT====================
- Copyright (C) 2008 Google, Inc
- Contributed by Paul Pluzhnikov <ppluzhnikov@google.com>
- Copyright (C) 2010 Konstantin Belousov <kib@freebsd.org>
-
-
-====================COPYRIGHT====================
-# Copyright 2010 Google Inc. All rights reserved.
-
-
-====================COPYRIGHT====================
-Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
-Inc.
-
-
-====================COPYRIGHT====================
-Copyright (c) 1989, 1993
-The Regents of the University of California. All rights reserved.
-
-
-====================COPYRIGHT====================
-Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
-
-
-====================COPYRIGHT====================
-Copyright (c) 2006, Google Inc.
-All rights reserved.
-
-
-====================COPYRIGHT====================
-Copyright 2001-2004 Unicode, Inc.
-
-
-====================ClArtistic====================
- The "Clarified Artistic License"
-
- Preamble
-
-The intent of this document is to state the conditions under which a
-Package may be copied, such that the Copyright Holder maintains some
-semblance of artistic control over the development of the package,
-while giving the users of the package the right to use and distribute
-the Package in a more-or-less customary fashion, plus the right to make
-reasonable modifications.
-
-Definitions:
-
- "Package" refers to the collection of files distributed by the
- Copyright Holder, and derivatives of that collection of files
- created through textual modification.
-
- "Standard Version" refers to such a Package if it has not been
- modified, or has been modified in accordance with the wishes
- of the Copyright Holder as specified below.
-
- "Copyright Holder" is whoever is named in the copyright or
- copyrights for the package.
-
- "You" is you, if you're thinking about copying or distributing
- this Package.
-
- "Distribution fee" is a fee you charge for providing a copy of this
- Package to another party.
-
- "Freely Available" means that no fee is charged for the right to use
- the item, though there may be fees involved in handling the item.
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-derived from the Public Domain, or those made Freely Available, or from
-the Copyright Holder. A Package modified in such a way shall still be
-considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-that you insert a prominent notice in each changed file stating how and
-when you changed that file, and provided that you do at least ONE of the
-following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or
- an equivalent medium, or placing the modifications on a major archive
- site allowing unrestricted access to them, or by allowing the Copyright
- Holder to include your modifications in the Standard Version of the
- Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided, and provide
- a separate manual page for each non-standard executable that clearly
- documents how it differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
- e) permit and encourge anyone who receives a copy of the modified Package
- permission to make your modifications Freely Available in some specific
- way.
-
-4. You may distribute the programs of this Package in object code or
-executable form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where
- to get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of
- the Package with your modifications.
-
- c) give non-standard executables non-standard names, and clearly
- document the differences in manual pages (or equivalent), together
- with instructions on where to get the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
- e) offer the machine-readable source of the Package, with your
- modifications, by mail order.
-
-5. You may charge a distribution fee for any distribution of this Package.
-If you offer support for this Package, you may charge any fee you choose
-for that support. You may not charge a license fee for the right to use
-this Package itself. You may distribute this Package in aggregate with
-other (possibly commercial and possibly nonfree) programs as part of a
-larger (possibly commercial and possibly nonfree) software distribution,
-and charge license fees for other parts of that software distribution,
-provided that you do not advertise this Package as a product of your own.
-If the Package includes an interpreter, You may embed this Package's
-interpreter within an executable of yours (by linking); this shall be
-construed as a mere form of aggregation, provided that the complete
-Standard Version of the interpreter is so embedded.
-
-6. The scripts and library files supplied as input to or produced as
-output from the programs of this Package do not automatically fall
-under the copyright of this Package, but belong to whoever generated
-them, and may be sold commercially, and may be aggregated with this
-Package. If such scripts or library files are aggregated with this
-Package via the so-called "undump" or "unexec" methods of producing a
-binary executable image, then distribution of such an image shall
-neither be construed as a distribution of this Package nor shall it
-fall under the restrictions of Paragraphs 3 and 4, provided that you do
-not represent such an executable image as a Standard Version of this
-Package.
-
-7. C subroutines (or comparably compiled subroutines in other
-languages) supplied by you and linked into this Package in order to
-emulate subroutines and variables of the language defined by this
-Package shall not be considered part of this Package, but are the
-equivalent of input as in Paragraph 6, provided these subroutines do
-not change the language in any way that would cause it to fail the
-regression tests for the language.
-
-8. Aggregation of the Standard Version of the Package with a commercial
-distribution is always permitted provided that the use of this Package is
-embedded; that is, when no overt attempt is made to make this Package's
-interfaces visible to the end user of the commercial distribution.
-Such use shall not be construed as a distribution of this Package.
-
-9. The name of the Copyright Holder may not be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- The End
-
-====================ClArtistic====================
-License: Clarified-Artistic
-License File: LICENSE
-
-
-====================FSFAP====================
- Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved. This file is offered as-is,
-without warranty of any kind.
-
-
-====================File: AUTHORS====================
-opensource@google.com
-
-
-====================File: LICENSE====================
-Copyright (c) 2006, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------
-
-Copyright 2001-2004 Unicode, Inc.
-
-Disclaimer
-
-This source code is provided as is by Unicode, Inc. No claims are
-made as to fitness for any particular purpose. No warranties of any
-kind are expressed or implied. The recipient agrees to determine
-applicability of information provided. If this file has been
-purchased on magnetic or optical media from Unicode, Inc., the
-sole remedy for any claim will be exchange of defective media
-within 90 days of receipt.
-
-Limitations on Rights to Redistribute This Code
-
-Unicode, Inc. hereby grants the right to freely use the information
-supplied in this file in the creation of products supporting the
-Unicode Standard, and to make copies of this file in any form
-for internal or external distribution as long as this notice
-remains attached.
-
---------------------------------------------------------------------
-
-libunwind - a platform-independent unwind library
- Copyright (C) 2008 Google, Inc
- Contributed by Paul Pluzhnikov <ppluzhnikov@google.com>
- Copyright (C) 2010 Konstantin Belousov <kib@freebsd.org>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-
---------------------------------------------------------------------
-
-Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
-
-@APPLE_LICENSE_HEADER_START@
-
-This file contains Original Code and/or Modifications of Original Code
-as defined in and that are subject to the Apple Public Source License
-Version 2.0 (the 'License'). You may not use this file except in
-compliance with the License. Please obtain a copy of the License at
-http://www.opensource.apple.com/apsl/ and read it before using this
-file.
-
-The Original Code and all software distributed under the License are
-distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
-EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
-INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
-Please see the License for the specific language governing rights and
-limitations under the License.
-
-@APPLE_LICENSE_HEADER_END@
-
---------------------------------------------------------------------
-
-Copyright (c) 1989, 1993
-The Regents of the University of California. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
- must display the following acknowledgement:
- This product includes software developed by the University of
- California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-
-====================File: src/third_party/libdisasm/LICENSE====================
-
-
-
-
- The "Clarified Artistic License"
-
- Preamble
-
-The intent of this document is to state the conditions under which a
-Package may be copied, such that the Copyright Holder maintains some
-semblance of artistic control over the development of the package,
-while giving the users of the package the right to use and distribute
-the Package in a more-or-less customary fashion, plus the right to make
-reasonable modifications.
-
-Definitions:
-
- "Package" refers to the collection of files distributed by the
- Copyright Holder, and derivatives of that collection of files
- created through textual modification.
-
- "Standard Version" refers to such a Package if it has not been
- modified, or has been modified in accordance with the wishes
- of the Copyright Holder as specified below.
-
- "Copyright Holder" is whoever is named in the copyright or
- copyrights for the package.
-
- "You" is you, if you're thinking about copying or distributing
- this Package.
-
- "Distribution fee" is a fee you charge for providing a copy of this
- Package to another party.
-
- "Freely Available" means that no fee is charged for the right to use
- the item, though there may be fees involved in handling the item.
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-derived from the Public Domain, or those made Freely Available, or from
-the Copyright Holder. A Package modified in such a way shall still be
-considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-that you insert a prominent notice in each changed file stating how and
-when you changed that file, and provided that you do at least ONE of the
-following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or
- an equivalent medium, or placing the modifications on a major archive
- site allowing unrestricted access to them, or by allowing the Copyright
- Holder to include your modifications in the Standard Version of the
- Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided, and provide
- a separate manual page for each non-standard executable that clearly
- documents how it differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
- e) permit and encourge anyone who receives a copy of the modified Package
- permission to make your modifications Freely Available in some specific
- way.
-
-4. You may distribute the programs of this Package in object code or
-executable form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where
- to get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of
- the Package with your modifications.
-
- c) give non-standard executables non-standard names, and clearly
- document the differences in manual pages (or equivalent), together
- with instructions on where to get the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
- e) offer the machine-readable source of the Package, with your
- modifications, by mail order.
-
-5. You may charge a distribution fee for any distribution of this Package.
-If you offer support for this Package, you may charge any fee you choose
-for that support. You may not charge a license fee for the right to use
-this Package itself. You may distribute this Package in aggregate with
-other (possibly commercial and possibly nonfree) programs as part of a
-larger (possibly commercial and possibly nonfree) software distribution,
-and charge license fees for other parts of that software distribution,
-provided that you do not advertise this Package as a product of your own.
-If the Package includes an interpreter, You may embed this Package's
-interpreter within an executable of yours (by linking); this shall be
-construed as a mere form of aggregation, provided that the complete
-Standard Version of the interpreter is so embedded.
-
-6. The scripts and library files supplied as input to or produced as
-output from the programs of this Package do not automatically fall
-under the copyright of this Package, but belong to whoever generated
-them, and may be sold commercially, and may be aggregated with this
-Package. If such scripts or library files are aggregated with this
-Package via the so-called "undump" or "unexec" methods of producing a
-binary executable image, then distribution of such an image shall
-neither be construed as a distribution of this Package nor shall it
-fall under the restrictions of Paragraphs 3 and 4, provided that you do
-not represent such an executable image as a Standard Version of this
-Package.
-
-7. C subroutines (or comparably compiled subroutines in other
-languages) supplied by you and linked into this Package in order to
-emulate subroutines and variables of the language defined by this
-Package shall not be considered part of this Package, but are the
-equivalent of input as in Paragraph 6, provided these subroutines do
-not change the language in any way that would cause it to fail the
-regression tests for the language.
-
-8. Aggregation of the Standard Version of the Package with a commercial
-distribution is always permitted provided that the use of this Package is
-embedded; that is, when no overt attempt is made to make this Package's
-interfaces visible to the end user of the commercial distribution.
-Such use shall not be construed as a distribution of this Package.
-
-9. The name of the Copyright Holder may not be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- The End
-
-
-====================File: src/third_party/lss/LICENSE====================
-Copyright 2005-2011 Google LLC
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- Neither the name of Google LLC nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-====================File: src/third_party/musl/COPYRIGHT====================
-musl as a whole is licensed under the following standard MIT license:
-
-----------------------------------------------------------------------
-Copyright © 2005-2014 Rich Felker, et al.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----------------------------------------------------------------------
-
-Authors/contributors include:
-
-Alex Dowad
-Alexander Monakov
-Anthony G. Basile
-Arvid Picciani
-Bobby Bingham
-Boris Brezillon
-Brent Cook
-Chris Spiegel
-Clément Vasseur
-Daniel Micay
-Denys Vlasenko
-Emil Renner Berthing
-Felix Fietkau
-Felix Janda
-Gianluca Anzolin
-Hauke Mehrtens
-Hiltjo Posthuma
-Isaac Dunham
-Jaydeep Patil
-Jens Gustedt
-Jeremy Huntwork
-Jo-Philipp Wich
-Joakim Sindholt
-John Spencer
-Josiah Worcester
-Justin Cormack
-Khem Raj
-Kylie McClain
-Luca Barbato
-Luka Perkov
-M Farkas-Dyck (Strake)
-Mahesh Bodapati
-Michael Forney
-Natanael Copa
-Nicholas J. Kain
-orc
-Pascal Cuoq
-Petr Hosek
-Pierre Carrier
-Rich Felker
-Richard Pennington
-Shiz
-sin
-Solar Designer
-Stefan Kristiansson
-Szabolcs Nagy
-Timo Teräs
-Trutz Behn
-Valentin Ochs
-William Haddon
-
-Portions of this software are derived from third-party works licensed
-under terms compatible with the above MIT license:
-
-The TRE regular expression implementation (src/regex/reg* and
-src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed
-under a 2-clause BSD license (license text in the source files). The
-included version has been heavily modified by Rich Felker in 2012, in
-the interests of size, simplicity, and namespace cleanliness.
-
-Much of the math library code (src/math/* and src/complex/*) is
-Copyright © 1993,2004 Sun Microsystems or
-Copyright © 2003-2011 David Schultz or
-Copyright © 2003-2009 Steven G. Kargl or
-Copyright © 2003-2009 Bruce D. Evans or
-Copyright © 2008 Stephen L. Moshier
-and labelled as such in comments in the individual source files. All
-have been licensed under extremely permissive terms.
-
-The ARM memcpy code (src/string/arm/memcpy_el.S) is Copyright © 2008
-The Android Open Source Project and is licensed under a two-clause BSD
-license. It was taken from Bionic libc, used on Android.
-
-The implementation of DES for crypt (src/crypt/crypt_des.c) is
-Copyright © 1994 David Burren. It is licensed under a BSD license.
-
-The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was
-originally written by Solar Designer and placed into the public
-domain. The code also comes with a fallback permissive license for use
-in jurisdictions that may not recognize the public domain.
-
-The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
-Valentin Ochs and is licensed under an MIT-style license.
-
-The BSD PRNG implementation (src/prng/random.c) and XSI search API
-(src/search/*.c) functions are Copyright © 2011 Szabolcs Nagy and
-licensed under following terms: "Permission to use, copy, modify,
-and/or distribute this code for any purpose with or without fee is
-hereby granted. There is no warranty."
-
-The x86_64 port was written by Nicholas J. Kain and is licensed under
-the standard MIT terms.
-
-The mips and microblaze ports were originally written by Richard
-Pennington for use in the ellcc project. The original code was adapted
-by Rich Felker for build system and code conventions during upstream
-integration. It is licensed under the standard MIT terms.
-
-The mips64 port was contributed by Imagination Technologies and is
-licensed under the standard MIT terms.
-
-The powerpc port was also originally written by Richard Pennington,
-and later supplemented and integrated by John Spencer. It is licensed
-under the standard MIT terms.
-
-All other files which have no copyright comments are original works
-produced specifically for use as part of this library, written either
-by Rich Felker, the main author of the library, or by one or more
-contibutors listed above. Details on authorship of individual files
-can be found in the git version control history of the project. The
-omission of copyright and license comments in each file is in the
-interest of source tree size.
-
-In addition, permission is hereby granted for all public header files
-(include/* and arch/*/bits/*) and crt files intended to be linked into
-applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit
-the copyright notice and permission notice otherwise required by the
-license, and to use these files without any requirement of
-attribution. These files include substantial contributions from:
-
-Bobby Bingham
-John Spencer
-Nicholas J. Kain
-Rich Felker
-Richard Pennington
-Stefan Kristiansson
-Szabolcs Nagy
-
-all of whom have explicitly granted such permission.
-
-This file previously contained text expressing a belief that most of
-the files covered by the above exception were sufficiently trivial not
-to be subject to copyright, resulting in confusion over whether it
-negated the permissions granted in the license. In the spirit of
-permissive licensing, and of not having licensing issues being an
-obstacle to adoption, that text has been removed.
-
-
-====================MIT====================
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-
-
-====================Unicode-Mappings====================
-Disclaimer
-
-This source code is provided as is by Unicode, Inc. No claims are
-made as to fitness for any particular purpose. No warranties of any
-kind are expressed or implied. The recipient agrees to determine
-applicability of information provided. If this file has been
-purchased on magnetic or optical media from Unicode, Inc., the
-sole remedy for any claim will be exchange of defective media
-within 90 days of receipt.
-
-Limitations on Rights to Redistribute This Code
-
-Unicode, Inc. hereby grants the right to freely use the information
-supplied in this file in the creation of products supporting the
-Unicode Standard, and to make copies of this file in any form
-for internal or external distribution as long as this notice
-remains attached.
diff --git a/contrib/libs/breakpad/src/third_party/libdisasm/ya.make b/contrib/libs/breakpad/src/third_party/libdisasm/ya.make
deleted file mode 100644
index a6fe00d161..0000000000
--- a/contrib/libs/breakpad/src/third_party/libdisasm/ya.make
+++ /dev/null
@@ -1,49 +0,0 @@
-# Generated by devtools/yamaker.
-
-LIBRARY()
-
-LICENSE(
- APSL-2.0 AND
- BSD-3-Clause AND
- BSD-4-Clause-UC AND
- ClArtistic AND
- FSFAP AND
- MIT AND
- Unicode-Mappings
-)
-
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
-VERSION(2022.07.12)
-
-ADDINCL(
- contrib/libs/breakpad
- contrib/libs/breakpad/src
-)
-
-NO_COMPILER_WARNINGS()
-
-NO_RUNTIME()
-
-CFLAGS(
- -DHAVE_CONFIG_H
-)
-
-SRCS(
- ia32_implicit.c
- ia32_insn.c
- ia32_invariant.c
- ia32_modrm.c
- ia32_opcode_tables.c
- ia32_operand.c
- ia32_reg.c
- ia32_settings.c
- x86_disasm.c
- x86_format.c
- x86_imm.c
- x86_insn.c
- x86_misc.c
- x86_operand_list.c
-)
-
-END()
diff --git a/contrib/libs/breakpad/src/ya.make b/contrib/libs/breakpad/src/ya.make
index 1c683a0576..2611d5f447 100644
--- a/contrib/libs/breakpad/src/ya.make
+++ b/contrib/libs/breakpad/src/ya.make
@@ -7,6 +7,7 @@ LICENSE(
BSD-2-Clause AND
BSD-3-Clause AND
BSD-4-Clause-UC AND
+ Custom-clarified-artistic-proofread AND
FSFAP AND
GPL-2.0-only AND
LicenseRef-scancode-other-permissive AND
@@ -77,6 +78,20 @@ SRCS(
processor/stackwalker_x86.cc
processor/symbolic_constants_win.cc
processor/tokenize.cc
+ third_party/libdisasm/ia32_implicit.c
+ third_party/libdisasm/ia32_insn.c
+ third_party/libdisasm/ia32_invariant.c
+ third_party/libdisasm/ia32_modrm.c
+ third_party/libdisasm/ia32_opcode_tables.c
+ third_party/libdisasm/ia32_operand.c
+ third_party/libdisasm/ia32_reg.c
+ third_party/libdisasm/ia32_settings.c
+ third_party/libdisasm/x86_disasm.c
+ third_party/libdisasm/x86_format.c
+ third_party/libdisasm/x86_imm.c
+ third_party/libdisasm/x86_insn.c
+ third_party/libdisasm/x86_misc.c
+ third_party/libdisasm/x86_operand_list.c
)
END()
diff --git a/contrib/libs/breakpad/ya.make b/contrib/libs/breakpad/ya.make
index c73ea50ed0..b4e9494ec8 100644
--- a/contrib/libs/breakpad/ya.make
+++ b/contrib/libs/breakpad/ya.make
@@ -15,7 +15,6 @@ IF (NOT OS_ANDROID)
minidump_stackwalk
minidump_upload
src
- src/third_party/libdisasm
src/tools/linux/core2md
src/tools/linux/dump_syms
src/tools/linux/md2core
diff --git a/contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report b/contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report
index 4ef93db9b0..2a901f7eaf 100644
--- a/contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report
+++ b/contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report
@@ -2832,6 +2832,17 @@ BELONGS ya.make
Files with this license:
scsi/scsi_bsg_ufs.h [5:6]
+KEEP COPYRIGHT_SERVICE_LABEL 8999aed970320ca8558f44732e40779b
+BELONGS ya.make
+ License text:
+ * Copyright (C) 2023 Advanced Micro Devices, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ linux/psp-dbc.h [5:5]
+
KEEP COPYRIGHT_SERVICE_LABEL 89d5fc8805673ffdbe4fc447403720b9
BELONGS ya.make
License text:
diff --git a/contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report b/contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report
index 5a687a56a6..3fee52688f 100644
--- a/contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report
+++ b/contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report
@@ -2622,7 +2622,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-copyleft.LICENSE
Files with this license:
- linux/bpf.h [6330:6330]
+ linux/bpf.h [6410:6410]
KEEP GPL-2.0-or-later WITH Linux-syscall-note 534ccb3153742b07bce86782a49733fc
BELONGS ya.make
@@ -3494,7 +3494,7 @@ FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: linux/rxrpc.
KEEP GPL-2.0-only WITH Linux-syscall-note 8f065979effd897c5008afa60beda79d
BELONGS ya.make
-FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: drm/ivpu_accel.h at line 1, linux/amt.h at line 1, linux/can/j1939.h at line 1, linux/can/netlink.h at line 1, linux/can/vxcan.h at line 1, linux/ccs.h at line 1, linux/dw100.h at line 1, linux/ethtool_netlink.h at line 1, linux/gpio.h at line 1, linux/input-event-codes.h at line 1, linux/netfilter/xt_IDLETIMER.h at line 1, linux/psp-sev.h at line 1, linux/remoteproc_cdev.h at line 1, linux/sev-guest.h at line 1, linux/wmi.h at line 1, linux/wwan.h at line 1
+FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: drm/ivpu_accel.h at line 1, linux/amt.h at line 1, linux/can/j1939.h at line 1, linux/can/netlink.h at line 1, linux/can/vxcan.h at line 1, linux/ccs.h at line 1, linux/dw100.h at line 1, linux/ethtool_netlink.h at line 1, linux/gpio.h at line 1, linux/input-event-codes.h at line 1, linux/netfilter/xt_IDLETIMER.h at line 1, linux/psp-dbc.h at line 1, linux/psp-sev.h at line 1, linux/remoteproc_cdev.h at line 1, linux/sev-guest.h at line 1, linux/wmi.h at line 1, linux/wwan.h at line 1
License text:
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
Scancode info:
@@ -3514,6 +3514,7 @@ FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: drm/ivpu_acc
linux/gpio.h [1:1]
linux/input-event-codes.h [1:1]
linux/netfilter/xt_IDLETIMER.h [1:1]
+ linux/psp-dbc.h [1:1]
linux/psp-sev.h [1:1]
linux/remoteproc_cdev.h [1:1]
linux/sev-guest.h [1:1]
@@ -3536,6 +3537,7 @@ FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: drm/ivpu_acc
linux/gpio.h [1:1]
linux/input-event-codes.h [1:1]
linux/netfilter/xt_IDLETIMER.h [1:1]
+ linux/psp-dbc.h [1:1]
linux/psp-sev.h [1:1]
linux/remoteproc_cdev.h [1:1]
linux/sev-guest.h [1:1]
@@ -4172,7 +4174,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
Files with this license:
- linux/fuse.h [336:336]
+ linux/fuse.h [374:374]
KEEP GPL-2.0-or-later WITH Linux-syscall-note c196f33d1f74889d4f98f65f6f70ea8f
BELONGS ya.make
diff --git a/contrib/libs/linux-headers/.yandex_meta/licenses.list.txt b/contrib/libs/linux-headers/.yandex_meta/licenses.list.txt
index 922010a71f..bb6679c278 100644
--- a/contrib/libs/linux-headers/.yandex_meta/licenses.list.txt
+++ b/contrib/libs/linux-headers/.yandex_meta/licenses.list.txt
@@ -2020,6 +2020,10 @@
====================COPYRIGHT====================
+ * Copyright (C) 2023 Advanced Micro Devices, Inc.
+
+
+====================COPYRIGHT====================
* Copyright (C) 2023 BayLibre Incorporated - https://www.baylibre.com/
diff --git a/contrib/libs/linux-headers/asm-generic/siginfo.h b/contrib/libs/linux-headers/asm-generic/siginfo.h
index 568e11a8d6..af51be7025 100644
--- a/contrib/libs/linux-headers/asm-generic/siginfo.h
+++ b/contrib/libs/linux-headers/asm-generic/siginfo.h
@@ -242,7 +242,8 @@ typedef struct siginfo {
#define SEGV_ADIPERR 7 /* Precise MCD exception */
#define SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */
#define SEGV_MTESERR 9 /* Synchronous ARM MTE exception */
-#define NSIGSEGV 9
+#define SEGV_CPERR 10 /* Control protection fault */
+#define NSIGSEGV 10
/*
* SIGBUS si_codes
diff --git a/contrib/libs/linux-headers/asm-generic/unistd.h b/contrib/libs/linux-headers/asm-generic/unistd.h
index fd6c1cb585..abe087c53b 100644
--- a/contrib/libs/linux-headers/asm-generic/unistd.h
+++ b/contrib/libs/linux-headers/asm-generic/unistd.h
@@ -820,8 +820,11 @@ __SYSCALL(__NR_set_mempolicy_home_node, sys_set_mempolicy_home_node)
#define __NR_cachestat 451
__SYSCALL(__NR_cachestat, sys_cachestat)
+#define __NR_fchmodat2 452
+__SYSCALL(__NR_fchmodat2, sys_fchmodat2)
+
#undef __NR_syscalls
-#define __NR_syscalls 452
+#define __NR_syscalls 453
/*
* 32 bit systems traditionally used different
diff --git a/contrib/libs/linux-headers/asm/mman_x86.h b/contrib/libs/linux-headers/asm/mman_x86.h
index 775dbd3aff..46cdc941f9 100644
--- a/contrib/libs/linux-headers/asm/mman_x86.h
+++ b/contrib/libs/linux-headers/asm/mman_x86.h
@@ -3,14 +3,10 @@
#define _ASM_X86_MMAN_H
#define MAP_32BIT 0x40 /* only give out 32bit addresses */
+#define MAP_ABOVE4G 0x80 /* only map above 4GB */
-#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
-#define arch_calc_vm_prot_bits(prot, key) ( \
- ((key) & 0x1 ? VM_PKEY_BIT0 : 0) | \
- ((key) & 0x2 ? VM_PKEY_BIT1 : 0) | \
- ((key) & 0x4 ? VM_PKEY_BIT2 : 0) | \
- ((key) & 0x8 ? VM_PKEY_BIT3 : 0))
-#endif
+/* Flags for map_shadow_stack(2) */
+#define SHADOW_STACK_SET_TOKEN (1ULL << 0) /* Set up a restore token in the shadow stack */
#include <asm-generic/mman.h>
diff --git a/contrib/libs/linux-headers/asm/prctl_x86.h b/contrib/libs/linux-headers/asm/prctl_x86.h
index e8d7ebbca1..384e2cc6ac 100644
--- a/contrib/libs/linux-headers/asm/prctl_x86.h
+++ b/contrib/libs/linux-headers/asm/prctl_x86.h
@@ -23,9 +23,21 @@
#define ARCH_MAP_VDSO_32 0x2002
#define ARCH_MAP_VDSO_64 0x2003
+/* Don't use 0x3001-0x3004 because of old glibcs */
+
#define ARCH_GET_UNTAG_MASK 0x4001
#define ARCH_ENABLE_TAGGED_ADDR 0x4002
#define ARCH_GET_MAX_TAG_BITS 0x4003
#define ARCH_FORCE_TAGGED_SVA 0x4004
+#define ARCH_SHSTK_ENABLE 0x5001
+#define ARCH_SHSTK_DISABLE 0x5002
+#define ARCH_SHSTK_LOCK 0x5003
+#define ARCH_SHSTK_UNLOCK 0x5004
+#define ARCH_SHSTK_STATUS 0x5005
+
+/* ARCH_SHSTK_ features bits */
+#define ARCH_SHSTK_SHSTK (1ULL << 0)
+#define ARCH_SHSTK_WRSS (1ULL << 1)
+
#endif /* _ASM_X86_PRCTL_H */
diff --git a/contrib/libs/linux-headers/asm/unistd-eabi_arm.h b/contrib/libs/linux-headers/asm/unistd-eabi_arm.h
index de7a6f7dd9..9c2e7aebc3 100644
--- a/contrib/libs/linux-headers/asm/unistd-eabi_arm.h
+++ b/contrib/libs/linux-headers/asm/unistd-eabi_arm.h
@@ -405,5 +405,6 @@
#define __NR_futex_waitv (__NR_SYSCALL_BASE + 449)
#define __NR_set_mempolicy_home_node (__NR_SYSCALL_BASE + 450)
#define __NR_cachestat (__NR_SYSCALL_BASE + 451)
+#define __NR_fchmodat2 (__NR_SYSCALL_BASE + 452)
#endif /* _ASM_UNISTD_EABI_H */
diff --git a/contrib/libs/linux-headers/asm/unistd-oabi_arm.h b/contrib/libs/linux-headers/asm/unistd-oabi_arm.h
index c99c445653..a35a910132 100644
--- a/contrib/libs/linux-headers/asm/unistd-oabi_arm.h
+++ b/contrib/libs/linux-headers/asm/unistd-oabi_arm.h
@@ -417,5 +417,6 @@
#define __NR_futex_waitv (__NR_SYSCALL_BASE + 449)
#define __NR_set_mempolicy_home_node (__NR_SYSCALL_BASE + 450)
#define __NR_cachestat (__NR_SYSCALL_BASE + 451)
+#define __NR_fchmodat2 (__NR_SYSCALL_BASE + 452)
#endif /* _ASM_UNISTD_OABI_H */
diff --git a/contrib/libs/linux-headers/asm/unistd_32_powerpc.h b/contrib/libs/linux-headers/asm/unistd_32_powerpc.h
index 8206758691..8ef94bbac1 100644
--- a/contrib/libs/linux-headers/asm/unistd_32_powerpc.h
+++ b/contrib/libs/linux-headers/asm/unistd_32_powerpc.h
@@ -433,6 +433,7 @@
#define __NR_futex_waitv 449
#define __NR_set_mempolicy_home_node 450
#define __NR_cachestat 451
+#define __NR_fchmodat2 452
#endif /* _ASM_UNISTD_32_H */
diff --git a/contrib/libs/linux-headers/asm/unistd_32_x86.h b/contrib/libs/linux-headers/asm/unistd_32_x86.h
index 37b32d8139..d749ad1c24 100644
--- a/contrib/libs/linux-headers/asm/unistd_32_x86.h
+++ b/contrib/libs/linux-headers/asm/unistd_32_x86.h
@@ -442,6 +442,7 @@
#define __NR_futex_waitv 449
#define __NR_set_mempolicy_home_node 450
#define __NR_cachestat 451
+#define __NR_fchmodat2 452
#endif /* _ASM_UNISTD_32_H */
diff --git a/contrib/libs/linux-headers/asm/unistd_64_powerpc.h b/contrib/libs/linux-headers/asm/unistd_64_powerpc.h
index 7be98c15f0..0e7ee43e88 100644
--- a/contrib/libs/linux-headers/asm/unistd_64_powerpc.h
+++ b/contrib/libs/linux-headers/asm/unistd_64_powerpc.h
@@ -405,6 +405,7 @@
#define __NR_futex_waitv 449
#define __NR_set_mempolicy_home_node 450
#define __NR_cachestat 451
+#define __NR_fchmodat2 452
#endif /* _ASM_UNISTD_64_H */
diff --git a/contrib/libs/linux-headers/asm/unistd_64_x86.h b/contrib/libs/linux-headers/asm/unistd_64_x86.h
index 5b55d6729a..cea67282eb 100644
--- a/contrib/libs/linux-headers/asm/unistd_64_x86.h
+++ b/contrib/libs/linux-headers/asm/unistd_64_x86.h
@@ -364,6 +364,8 @@
#define __NR_futex_waitv 449
#define __NR_set_mempolicy_home_node 450
#define __NR_cachestat 451
+#define __NR_fchmodat2 452
+#define __NR_map_shadow_stack 453
#endif /* _ASM_UNISTD_64_H */
diff --git a/contrib/libs/linux-headers/asm/unistd_x32_x86.h b/contrib/libs/linux-headers/asm/unistd_x32_x86.h
index e8a007543d..5b2e79bf4c 100644
--- a/contrib/libs/linux-headers/asm/unistd_x32_x86.h
+++ b/contrib/libs/linux-headers/asm/unistd_x32_x86.h
@@ -317,6 +317,7 @@
#define __NR_futex_waitv (__X32_SYSCALL_BIT + 449)
#define __NR_set_mempolicy_home_node (__X32_SYSCALL_BIT + 450)
#define __NR_cachestat (__X32_SYSCALL_BIT + 451)
+#define __NR_fchmodat2 (__X32_SYSCALL_BIT + 452)
#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
#define __NR_ioctl (__X32_SYSCALL_BIT + 514)
diff --git a/contrib/libs/linux-headers/drm/amdgpu_drm.h b/contrib/libs/linux-headers/drm/amdgpu_drm.h
index 79b14828d5..f477eda6a2 100644
--- a/contrib/libs/linux-headers/drm/amdgpu_drm.h
+++ b/contrib/libs/linux-headers/drm/amdgpu_drm.h
@@ -94,6 +94,9 @@ extern "C" {
*
* %AMDGPU_GEM_DOMAIN_OA Ordered append, used by 3D or Compute engines
* for appending data.
+ *
+ * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for
+ * signalling user mode queues.
*/
#define AMDGPU_GEM_DOMAIN_CPU 0x1
#define AMDGPU_GEM_DOMAIN_GTT 0x2
@@ -101,12 +104,14 @@ extern "C" {
#define AMDGPU_GEM_DOMAIN_GDS 0x8
#define AMDGPU_GEM_DOMAIN_GWS 0x10
#define AMDGPU_GEM_DOMAIN_OA 0x20
+#define AMDGPU_GEM_DOMAIN_DOORBELL 0x40
#define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
AMDGPU_GEM_DOMAIN_GTT | \
AMDGPU_GEM_DOMAIN_VRAM | \
AMDGPU_GEM_DOMAIN_GDS | \
AMDGPU_GEM_DOMAIN_GWS | \
- AMDGPU_GEM_DOMAIN_OA)
+ AMDGPU_GEM_DOMAIN_OA | \
+ AMDGPU_GEM_DOMAIN_DOORBELL)
/* Flag that CPU access will be required for the case of VRAM domain */
#define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
diff --git a/contrib/libs/linux-headers/drm/drm.h b/contrib/libs/linux-headers/drm/drm.h
index 581a7f6301..02540248de 100644
--- a/contrib/libs/linux-headers/drm/drm.h
+++ b/contrib/libs/linux-headers/drm/drm.h
@@ -667,8 +667,11 @@ struct drm_gem_open {
* Bitfield of supported PRIME sharing capabilities. See &DRM_PRIME_CAP_IMPORT
* and &DRM_PRIME_CAP_EXPORT.
*
- * PRIME buffers are exposed as dma-buf file descriptors. See
- * Documentation/gpu/drm-mm.rst, section "PRIME Buffer Sharing".
+ * Starting from kernel version 6.6, both &DRM_PRIME_CAP_IMPORT and
+ * &DRM_PRIME_CAP_EXPORT are always advertised.
+ *
+ * PRIME buffers are exposed as dma-buf file descriptors.
+ * See :ref:`prime_buffer_sharing`.
*/
#define DRM_CAP_PRIME 0x5
/**
@@ -676,6 +679,8 @@ struct drm_gem_open {
*
* If this bit is set in &DRM_CAP_PRIME, the driver supports importing PRIME
* buffers via the &DRM_IOCTL_PRIME_FD_TO_HANDLE ioctl.
+ *
+ * Starting from kernel version 6.6, this bit is always set in &DRM_CAP_PRIME.
*/
#define DRM_PRIME_CAP_IMPORT 0x1
/**
@@ -683,6 +688,8 @@ struct drm_gem_open {
*
* If this bit is set in &DRM_CAP_PRIME, the driver supports exporting PRIME
* buffers via the &DRM_IOCTL_PRIME_HANDLE_TO_FD ioctl.
+ *
+ * Starting from kernel version 6.6, this bit is always set in &DRM_CAP_PRIME.
*/
#define DRM_PRIME_CAP_EXPORT 0x2
/**
@@ -750,15 +757,14 @@ struct drm_gem_open {
/**
* DRM_CAP_SYNCOBJ
*
- * If set to 1, the driver supports sync objects. See
- * Documentation/gpu/drm-mm.rst, section "DRM Sync Objects".
+ * If set to 1, the driver supports sync objects. See :ref:`drm_sync_objects`.
*/
#define DRM_CAP_SYNCOBJ 0x13
/**
* DRM_CAP_SYNCOBJ_TIMELINE
*
* If set to 1, the driver supports timeline operations on sync objects. See
- * Documentation/gpu/drm-mm.rst, section "DRM Sync Objects".
+ * :ref:`drm_sync_objects`.
*/
#define DRM_CAP_SYNCOBJ_TIMELINE 0x14
@@ -903,6 +909,27 @@ struct drm_syncobj_timeline_wait {
__u32 pad;
};
+/**
+ * struct drm_syncobj_eventfd
+ * @handle: syncobj handle.
+ * @flags: Zero to wait for the point to be signalled, or
+ * &DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE to wait for a fence to be
+ * available for the point.
+ * @point: syncobj timeline point (set to zero for binary syncobjs).
+ * @fd: Existing eventfd to sent events to.
+ * @pad: Must be zero.
+ *
+ * Register an eventfd to be signalled by a syncobj. The eventfd counter will
+ * be incremented by one.
+ */
+struct drm_syncobj_eventfd {
+ __u32 handle;
+ __u32 flags;
+ __u64 point;
+ __s32 fd;
+ __u32 pad;
+};
+
struct drm_syncobj_array {
__u64 handles;
@@ -1163,6 +1190,8 @@ extern "C" {
*/
#define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
+#define DRM_IOCTL_SYNCOBJ_EVENTFD DRM_IOWR(0xCF, struct drm_syncobj_eventfd)
+
/*
* Device specific ioctls should only be in their respective headers
* The device specific ioctl range is from 0x40 to 0x9f.
@@ -1174,25 +1203,50 @@ extern "C" {
#define DRM_COMMAND_BASE 0x40
#define DRM_COMMAND_END 0xA0
-/*
- * Header for events written back to userspace on the drm fd. The
- * type defines the type of event, the length specifies the total
- * length of the event (including the header), and user_data is
- * typically a 64 bit value passed with the ioctl that triggered the
- * event. A read on the drm fd will always only return complete
- * events, that is, if for example the read buffer is 100 bytes, and
- * there are two 64 byte events pending, only one will be returned.
+/**
+ * struct drm_event - Header for DRM events
+ * @type: event type.
+ * @length: total number of payload bytes (including header).
*
- * Event types 0 - 0x7fffffff are generic drm events, 0x80000000 and
- * up are chipset specific.
+ * This struct is a header for events written back to user-space on the DRM FD.
+ * A read on the DRM FD will always only return complete events: e.g. if the
+ * read buffer is 100 bytes large and there are two 64 byte events pending,
+ * only one will be returned.
+ *
+ * Event types 0 - 0x7fffffff are generic DRM events, 0x80000000 and
+ * up are chipset specific. Generic DRM events include &DRM_EVENT_VBLANK,
+ * &DRM_EVENT_FLIP_COMPLETE and &DRM_EVENT_CRTC_SEQUENCE.
*/
struct drm_event {
__u32 type;
__u32 length;
};
+/**
+ * DRM_EVENT_VBLANK - vertical blanking event
+ *
+ * This event is sent in response to &DRM_IOCTL_WAIT_VBLANK with the
+ * &_DRM_VBLANK_EVENT flag set.
+ *
+ * The event payload is a struct drm_event_vblank.
+ */
#define DRM_EVENT_VBLANK 0x01
+/**
+ * DRM_EVENT_FLIP_COMPLETE - page-flip completion event
+ *
+ * This event is sent in response to an atomic commit or legacy page-flip with
+ * the &DRM_MODE_PAGE_FLIP_EVENT flag set.
+ *
+ * The event payload is a struct drm_event_vblank.
+ */
#define DRM_EVENT_FLIP_COMPLETE 0x02
+/**
+ * DRM_EVENT_CRTC_SEQUENCE - CRTC sequence event
+ *
+ * This event is sent in response to &DRM_IOCTL_CRTC_QUEUE_SEQUENCE.
+ *
+ * The event payload is a struct drm_event_crtc_sequence.
+ */
#define DRM_EVENT_CRTC_SEQUENCE 0x03
struct drm_event_vblank {
diff --git a/contrib/libs/linux-headers/drm/drm_mode.h b/contrib/libs/linux-headers/drm/drm_mode.h
index 43691058d2..ea1b639bcb 100644
--- a/contrib/libs/linux-headers/drm/drm_mode.h
+++ b/contrib/libs/linux-headers/drm/drm_mode.h
@@ -488,6 +488,9 @@ struct drm_mode_get_connector {
* This is not an object ID. This is a per-type connector number. Each
* (type, type_id) combination is unique across all connectors of a DRM
* device.
+ *
+ * The (type, type_id) combination is not a stable identifier: the
+ * type_id can change depending on the driver probe order.
*/
__u32 connector_type_id;
@@ -883,7 +886,7 @@ struct hdr_metadata_infoframe {
*/
struct {
__u16 x, y;
- } display_primaries[3];
+ } display_primaries[3];
/**
* @white_point: White Point of Colorspace Data.
* These are coded as unsigned 16-bit values in units of
@@ -894,7 +897,7 @@ struct hdr_metadata_infoframe {
*/
struct {
__u16 x, y;
- } white_point;
+ } white_point;
/**
* @max_display_mastering_luminance: Max Mastering Display Luminance.
* This value is coded as an unsigned 16-bit value in units of 1 cd/m2,
diff --git a/contrib/libs/linux-headers/drm/ivpu_accel.h b/contrib/libs/linux-headers/drm/ivpu_accel.h
index 839820aed8..a58a14c9f2 100644
--- a/contrib/libs/linux-headers/drm/ivpu_accel.h
+++ b/contrib/libs/linux-headers/drm/ivpu_accel.h
@@ -60,6 +60,7 @@ extern "C" {
#define DRM_IVPU_PARAM_UNIQUE_INFERENCE_ID 10
#define DRM_IVPU_PARAM_TILE_CONFIG 11
#define DRM_IVPU_PARAM_SKU 12
+#define DRM_IVPU_PARAM_CAPABILITIES 13
#define DRM_IVPU_PLATFORM_TYPE_SILICON 0
@@ -68,6 +69,9 @@ extern "C" {
#define DRM_IVPU_CONTEXT_PRIORITY_FOCUS 2
#define DRM_IVPU_CONTEXT_PRIORITY_REALTIME 3
+#define DRM_IVPU_CAP_METRIC_STREAMER 1
+#define DRM_IVPU_CAP_DMA_MEMORY_RANGE 2
+
/**
* struct drm_ivpu_param - Get/Set VPU parameters
*/
@@ -129,8 +133,10 @@ struct drm_ivpu_param {
__u64 value;
};
-#define DRM_IVPU_BO_HIGH_MEM 0x00000001
+#define DRM_IVPU_BO_SHAVE_MEM 0x00000001
+#define DRM_IVPU_BO_HIGH_MEM DRM_IVPU_BO_SHAVE_MEM
#define DRM_IVPU_BO_MAPPABLE 0x00000002
+#define DRM_IVPU_BO_DMA_MEM 0x00000004
#define DRM_IVPU_BO_CACHED 0x00000000
#define DRM_IVPU_BO_UNCACHED 0x00010000
@@ -140,6 +146,7 @@ struct drm_ivpu_param {
#define DRM_IVPU_BO_FLAGS \
(DRM_IVPU_BO_HIGH_MEM | \
DRM_IVPU_BO_MAPPABLE | \
+ DRM_IVPU_BO_DMA_MEM | \
DRM_IVPU_BO_CACHE_MASK)
/**
diff --git a/contrib/libs/linux-headers/drm/nouveau_drm.h b/contrib/libs/linux-headers/drm/nouveau_drm.h
index 853a327433..0bade1592f 100644
--- a/contrib/libs/linux-headers/drm/nouveau_drm.h
+++ b/contrib/libs/linux-headers/drm/nouveau_drm.h
@@ -33,11 +33,61 @@
extern "C" {
#endif
+#define NOUVEAU_GETPARAM_PCI_VENDOR 3
+#define NOUVEAU_GETPARAM_PCI_DEVICE 4
+#define NOUVEAU_GETPARAM_BUS_TYPE 5
+#define NOUVEAU_GETPARAM_FB_SIZE 8
+#define NOUVEAU_GETPARAM_AGP_SIZE 9
+#define NOUVEAU_GETPARAM_CHIPSET_ID 11
+#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12
+#define NOUVEAU_GETPARAM_GRAPH_UNITS 13
+#define NOUVEAU_GETPARAM_PTIMER_TIME 14
+#define NOUVEAU_GETPARAM_HAS_BO_USAGE 15
+#define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16
+
+/*
+ * NOUVEAU_GETPARAM_EXEC_PUSH_MAX - query max pushes through getparam
+ *
+ * Query the maximum amount of IBs that can be pushed through a single
+ * &drm_nouveau_exec structure and hence a single &DRM_IOCTL_NOUVEAU_EXEC
+ * ioctl().
+ */
+#define NOUVEAU_GETPARAM_EXEC_PUSH_MAX 17
+
+struct drm_nouveau_getparam {
+ __u64 param;
+ __u64 value;
+};
+
+struct drm_nouveau_channel_alloc {
+ __u32 fb_ctxdma_handle;
+ __u32 tt_ctxdma_handle;
+
+ __s32 channel;
+ __u32 pushbuf_domains;
+
+ /* Notifier memory */
+ __u32 notifier_handle;
+
+ /* DRM-enforced subchannel assignments */
+ struct {
+ __u32 handle;
+ __u32 grclass;
+ } subchan[8];
+ __u32 nr_subchan;
+};
+
+struct drm_nouveau_channel_free {
+ __s32 channel;
+};
+
#define NOUVEAU_GEM_DOMAIN_CPU (1 << 0)
#define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1)
#define NOUVEAU_GEM_DOMAIN_GART (1 << 2)
#define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3)
#define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4)
+/* The BO will never be shared via import or export. */
+#define NOUVEAU_GEM_DOMAIN_NO_SHARE (1 << 5)
#define NOUVEAU_GEM_TILE_COMP 0x00030000 /* nv50-only */
#define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00
@@ -98,6 +148,7 @@ struct drm_nouveau_gem_pushbuf_push {
__u32 pad;
__u64 offset;
__u64 length;
+#define NOUVEAU_GEM_PUSHBUF_NO_PREFETCH (1 << 23)
};
struct drm_nouveau_gem_pushbuf {
@@ -126,16 +177,233 @@ struct drm_nouveau_gem_cpu_fini {
__u32 handle;
};
-#define DRM_NOUVEAU_GETPARAM 0x00 /* deprecated */
+/**
+ * struct drm_nouveau_sync - sync object
+ *
+ * This structure serves as synchronization mechanism for (potentially)
+ * asynchronous operations such as EXEC or VM_BIND.
+ */
+struct drm_nouveau_sync {
+ /**
+ * @flags: the flags for a sync object
+ *
+ * The first 8 bits are used to determine the type of the sync object.
+ */
+ __u32 flags;
+#define DRM_NOUVEAU_SYNC_SYNCOBJ 0x0
+#define DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ 0x1
+#define DRM_NOUVEAU_SYNC_TYPE_MASK 0xf
+ /**
+ * @handle: the handle of the sync object
+ */
+ __u32 handle;
+ /**
+ * @timeline_value:
+ *
+ * The timeline point of the sync object in case the syncobj is of
+ * type DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ.
+ */
+ __u64 timeline_value;
+};
+
+/**
+ * struct drm_nouveau_vm_init - GPU VA space init structure
+ *
+ * Used to initialize the GPU's VA space for a user client, telling the kernel
+ * which portion of the VA space is managed by the UMD and kernel respectively.
+ *
+ * For the UMD to use the VM_BIND uAPI, this must be called before any BOs or
+ * channels are created; if called afterwards DRM_IOCTL_NOUVEAU_VM_INIT fails
+ * with -ENOSYS.
+ */
+struct drm_nouveau_vm_init {
+ /**
+ * @kernel_managed_addr: start address of the kernel managed VA space
+ * region
+ */
+ __u64 kernel_managed_addr;
+ /**
+ * @kernel_managed_size: size of the kernel managed VA space region in
+ * bytes
+ */
+ __u64 kernel_managed_size;
+};
+
+/**
+ * struct drm_nouveau_vm_bind_op - VM_BIND operation
+ *
+ * This structure represents a single VM_BIND operation. UMDs should pass
+ * an array of this structure via struct drm_nouveau_vm_bind's &op_ptr field.
+ */
+struct drm_nouveau_vm_bind_op {
+ /**
+ * @op: the operation type
+ */
+ __u32 op;
+/**
+ * @DRM_NOUVEAU_VM_BIND_OP_MAP:
+ *
+ * Map a GEM object to the GPU's VA space. Optionally, the
+ * &DRM_NOUVEAU_VM_BIND_SPARSE flag can be passed to instruct the kernel to
+ * create sparse mappings for the given range.
+ */
+#define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0
+/**
+ * @DRM_NOUVEAU_VM_BIND_OP_UNMAP:
+ *
+ * Unmap an existing mapping in the GPU's VA space. If the region the mapping
+ * is located in is a sparse region, new sparse mappings are created where the
+ * unmapped (memory backed) mapping was mapped previously. To remove a sparse
+ * region the &DRM_NOUVEAU_VM_BIND_SPARSE must be set.
+ */
+#define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1
+ /**
+ * @flags: the flags for a &drm_nouveau_vm_bind_op
+ */
+ __u32 flags;
+/**
+ * @DRM_NOUVEAU_VM_BIND_SPARSE:
+ *
+ * Indicates that an allocated VA space region should be sparse.
+ */
+#define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8)
+ /**
+ * @handle: the handle of the DRM GEM object to map
+ */
+ __u32 handle;
+ /**
+ * @pad: 32 bit padding, should be 0
+ */
+ __u32 pad;
+ /**
+ * @addr:
+ *
+ * the address the VA space region or (memory backed) mapping should be mapped to
+ */
+ __u64 addr;
+ /**
+ * @bo_offset: the offset within the BO backing the mapping
+ */
+ __u64 bo_offset;
+ /**
+ * @range: the size of the requested mapping in bytes
+ */
+ __u64 range;
+};
+
+/**
+ * struct drm_nouveau_vm_bind - structure for DRM_IOCTL_NOUVEAU_VM_BIND
+ */
+struct drm_nouveau_vm_bind {
+ /**
+ * @op_count: the number of &drm_nouveau_vm_bind_op
+ */
+ __u32 op_count;
+ /**
+ * @flags: the flags for a &drm_nouveau_vm_bind ioctl
+ */
+ __u32 flags;
+/**
+ * @DRM_NOUVEAU_VM_BIND_RUN_ASYNC:
+ *
+ * Indicates that the given VM_BIND operation should be executed asynchronously
+ * by the kernel.
+ *
+ * If this flag is not supplied the kernel executes the associated operations
+ * synchronously and doesn't accept any &drm_nouveau_sync objects.
+ */
+#define DRM_NOUVEAU_VM_BIND_RUN_ASYNC 0x1
+ /**
+ * @wait_count: the number of wait &drm_nouveau_syncs
+ */
+ __u32 wait_count;
+ /**
+ * @sig_count: the number of &drm_nouveau_syncs to signal when finished
+ */
+ __u32 sig_count;
+ /**
+ * @wait_ptr: pointer to &drm_nouveau_syncs to wait for
+ */
+ __u64 wait_ptr;
+ /**
+ * @sig_ptr: pointer to &drm_nouveau_syncs to signal when finished
+ */
+ __u64 sig_ptr;
+ /**
+ * @op_ptr: pointer to the &drm_nouveau_vm_bind_ops to execute
+ */
+ __u64 op_ptr;
+};
+
+/**
+ * struct drm_nouveau_exec_push - EXEC push operation
+ *
+ * This structure represents a single EXEC push operation. UMDs should pass an
+ * array of this structure via struct drm_nouveau_exec's &push_ptr field.
+ */
+struct drm_nouveau_exec_push {
+ /**
+ * @va: the virtual address of the push buffer mapping
+ */
+ __u64 va;
+ /**
+ * @va_len: the length of the push buffer mapping
+ */
+ __u32 va_len;
+ /**
+ * @flags: the flags for this push buffer mapping
+ */
+ __u32 flags;
+#define DRM_NOUVEAU_EXEC_PUSH_NO_PREFETCH 0x1
+};
+
+/**
+ * struct drm_nouveau_exec - structure for DRM_IOCTL_NOUVEAU_EXEC
+ */
+struct drm_nouveau_exec {
+ /**
+ * @channel: the channel to execute the push buffer in
+ */
+ __u32 channel;
+ /**
+ * @push_count: the number of &drm_nouveau_exec_push ops
+ */
+ __u32 push_count;
+ /**
+ * @wait_count: the number of wait &drm_nouveau_syncs
+ */
+ __u32 wait_count;
+ /**
+ * @sig_count: the number of &drm_nouveau_syncs to signal when finished
+ */
+ __u32 sig_count;
+ /**
+ * @wait_ptr: pointer to &drm_nouveau_syncs to wait for
+ */
+ __u64 wait_ptr;
+ /**
+ * @sig_ptr: pointer to &drm_nouveau_syncs to signal when finished
+ */
+ __u64 sig_ptr;
+ /**
+ * @push_ptr: pointer to &drm_nouveau_exec_push ops
+ */
+ __u64 push_ptr;
+};
+
+#define DRM_NOUVEAU_GETPARAM 0x00
#define DRM_NOUVEAU_SETPARAM 0x01 /* deprecated */
-#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 /* deprecated */
-#define DRM_NOUVEAU_CHANNEL_FREE 0x03 /* deprecated */
+#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02
+#define DRM_NOUVEAU_CHANNEL_FREE 0x03
#define DRM_NOUVEAU_GROBJ_ALLOC 0x04 /* deprecated */
#define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05 /* deprecated */
#define DRM_NOUVEAU_GPUOBJ_FREE 0x06 /* deprecated */
#define DRM_NOUVEAU_NVIF 0x07
#define DRM_NOUVEAU_SVM_INIT 0x08
#define DRM_NOUVEAU_SVM_BIND 0x09
+#define DRM_NOUVEAU_VM_INIT 0x10
+#define DRM_NOUVEAU_VM_BIND 0x11
+#define DRM_NOUVEAU_EXEC 0x12
#define DRM_NOUVEAU_GEM_NEW 0x40
#define DRM_NOUVEAU_GEM_PUSHBUF 0x41
#define DRM_NOUVEAU_GEM_CPU_PREP 0x42
@@ -188,6 +456,10 @@ struct drm_nouveau_svm_bind {
#define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31)
+#define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam)
+#define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc)
+#define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free)
+
#define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init)
#define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind)
@@ -197,6 +469,9 @@ struct drm_nouveau_svm_bind {
#define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
#define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info)
+#define DRM_IOCTL_NOUVEAU_VM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_VM_INIT, struct drm_nouveau_vm_init)
+#define DRM_IOCTL_NOUVEAU_VM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_VM_BIND, struct drm_nouveau_vm_bind)
+#define DRM_IOCTL_NOUVEAU_EXEC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_EXEC, struct drm_nouveau_exec)
#if defined(__cplusplus)
}
#endif
diff --git a/contrib/libs/linux-headers/drm/virtgpu_drm.h b/contrib/libs/linux-headers/drm/virtgpu_drm.h
index 7b158fcb02..b1d0e56565 100644
--- a/contrib/libs/linux-headers/drm/virtgpu_drm.h
+++ b/contrib/libs/linux-headers/drm/virtgpu_drm.h
@@ -64,6 +64,16 @@ struct drm_virtgpu_map {
__u32 pad;
};
+#define VIRTGPU_EXECBUF_SYNCOBJ_RESET 0x01
+#define VIRTGPU_EXECBUF_SYNCOBJ_FLAGS ( \
+ VIRTGPU_EXECBUF_SYNCOBJ_RESET | \
+ 0)
+struct drm_virtgpu_execbuffer_syncobj {
+ __u32 handle;
+ __u32 flags;
+ __u64 point;
+};
+
/* fence_fd is modified on success if VIRTGPU_EXECBUF_FENCE_FD_OUT flag is set. */
struct drm_virtgpu_execbuffer {
__u32 flags;
@@ -73,7 +83,11 @@ struct drm_virtgpu_execbuffer {
__u32 num_bo_handles;
__s32 fence_fd; /* in/out fence fd (see VIRTGPU_EXECBUF_FENCE_FD_IN/OUT) */
__u32 ring_idx; /* command ring index (see VIRTGPU_EXECBUF_RING_IDX) */
- __u32 pad;
+ __u32 syncobj_stride; /* size of @drm_virtgpu_execbuffer_syncobj */
+ __u32 num_in_syncobjs;
+ __u32 num_out_syncobjs;
+ __u64 in_syncobjs;
+ __u64 out_syncobjs;
};
#define VIRTGPU_PARAM_3D_FEATURES 1 /* do we have 3D features in the hw */
diff --git a/contrib/libs/linux-headers/linux/bpf.h b/contrib/libs/linux-headers/linux/bpf.h
index 14674d2fe9..f6f4347b75 100644
--- a/contrib/libs/linux-headers/linux/bpf.h
+++ b/contrib/libs/linux-headers/linux/bpf.h
@@ -19,6 +19,7 @@
/* ld/ldx fields */
#define BPF_DW 0x18 /* double word (64-bit) */
+#define BPF_MEMSX 0x80 /* load with sign extension */
#define BPF_ATOMIC 0xc0 /* atomic memory ops - op type in immediate */
#define BPF_XADD 0xc0 /* exclusive add - legacy name */
@@ -1036,6 +1037,9 @@ enum bpf_attach_type {
BPF_LSM_CGROUP,
BPF_STRUCT_OPS,
BPF_NETFILTER,
+ BPF_TCX_INGRESS,
+ BPF_TCX_EGRESS,
+ BPF_TRACE_UPROBE_MULTI,
__MAX_BPF_ATTACH_TYPE
};
@@ -1053,10 +1057,21 @@ enum bpf_link_type {
BPF_LINK_TYPE_KPROBE_MULTI = 8,
BPF_LINK_TYPE_STRUCT_OPS = 9,
BPF_LINK_TYPE_NETFILTER = 10,
-
+ BPF_LINK_TYPE_TCX = 11,
+ BPF_LINK_TYPE_UPROBE_MULTI = 12,
MAX_BPF_LINK_TYPE,
};
+enum bpf_perf_event_type {
+ BPF_PERF_EVENT_UNSPEC = 0,
+ BPF_PERF_EVENT_UPROBE = 1,
+ BPF_PERF_EVENT_URETPROBE = 2,
+ BPF_PERF_EVENT_KPROBE = 3,
+ BPF_PERF_EVENT_KRETPROBE = 4,
+ BPF_PERF_EVENT_TRACEPOINT = 5,
+ BPF_PERF_EVENT_EVENT = 6,
+};
+
/* cgroup-bpf attach flags used in BPF_PROG_ATTACH command
*
* NONE(default): No further bpf programs allowed in the subtree.
@@ -1103,7 +1118,12 @@ enum bpf_link_type {
*/
#define BPF_F_ALLOW_OVERRIDE (1U << 0)
#define BPF_F_ALLOW_MULTI (1U << 1)
+/* Generic attachment flags. */
#define BPF_F_REPLACE (1U << 2)
+#define BPF_F_BEFORE (1U << 3)
+#define BPF_F_AFTER (1U << 4)
+#define BPF_F_ID (1U << 5)
+#define BPF_F_LINK BPF_F_LINK /* 1 << 13 */
/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
* verifier will perform strict alignment checking as if the kernel
@@ -1168,7 +1188,21 @@ enum bpf_link_type {
/* link_create.kprobe_multi.flags used in LINK_CREATE command for
* BPF_TRACE_KPROBE_MULTI attach type to create return probe.
*/
-#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
+enum {
+ BPF_F_KPROBE_MULTI_RETURN = (1U << 0)
+};
+
+/* link_create.uprobe_multi.flags used in LINK_CREATE command for
+ * BPF_TRACE_UPROBE_MULTI attach type to create return probe.
+ */
+enum {
+ BPF_F_UPROBE_MULTI_RETURN = (1U << 0)
+};
+
+/* link_create.netfilter.flags used in LINK_CREATE command for
+ * BPF_PROG_TYPE_NETFILTER to enable IP packet defragmentation.
+ */
+#define BPF_F_NETFILTER_IP_DEFRAG (1U << 0)
/* When BPF ldimm64's insn[0].src_reg != 0 then this can have
* the following extensions:
@@ -1434,14 +1468,19 @@ union bpf_attr {
};
struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */
- __u32 target_fd; /* container object to attach to */
- __u32 attach_bpf_fd; /* eBPF program to attach */
+ union {
+ __u32 target_fd; /* target object to attach to or ... */
+ __u32 target_ifindex; /* target ifindex */
+ };
+ __u32 attach_bpf_fd;
__u32 attach_type;
__u32 attach_flags;
- __u32 replace_bpf_fd; /* previously attached eBPF
- * program to replace if
- * BPF_F_REPLACE is used
- */
+ __u32 replace_bpf_fd;
+ union {
+ __u32 relative_fd;
+ __u32 relative_id;
+ };
+ __u64 expected_revision;
};
struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */
@@ -1487,16 +1526,26 @@ union bpf_attr {
} info;
struct { /* anonymous struct used by BPF_PROG_QUERY command */
- __u32 target_fd; /* container object to query */
+ union {
+ __u32 target_fd; /* target object to query or ... */
+ __u32 target_ifindex; /* target ifindex */
+ };
__u32 attach_type;
__u32 query_flags;
__u32 attach_flags;
__aligned_u64 prog_ids;
- __u32 prog_cnt;
+ union {
+ __u32 prog_cnt;
+ __u32 count;
+ };
+ __u32 :32;
/* output: per-program attach_flags.
* not allowed to be set during effective query.
*/
__aligned_u64 prog_attach_flags;
+ __aligned_u64 link_ids;
+ __aligned_u64 link_attach_flags;
+ __u64 revision;
} query;
struct { /* anonymous struct used by BPF_RAW_TRACEPOINT_OPEN command */
@@ -1539,13 +1588,13 @@ union bpf_attr {
__u32 map_fd; /* struct_ops to attach */
};
union {
- __u32 target_fd; /* object to attach to */
- __u32 target_ifindex; /* target ifindex */
+ __u32 target_fd; /* target object to attach to or ... */
+ __u32 target_ifindex; /* target ifindex */
};
__u32 attach_type; /* attach type */
__u32 flags; /* extra flags */
union {
- __u32 target_btf_id; /* btf_id of target to attach to */
+ __u32 target_btf_id; /* btf_id of target to attach to */
struct {
__aligned_u64 iter_info; /* extra bpf_iter_link_info */
__u32 iter_info_len; /* iter_info length */
@@ -1579,6 +1628,22 @@ union bpf_attr {
__s32 priority;
__u32 flags;
} netfilter;
+ struct {
+ union {
+ __u32 relative_fd;
+ __u32 relative_id;
+ };
+ __u64 expected_revision;
+ } tcx;
+ struct {
+ __aligned_u64 path;
+ __aligned_u64 offsets;
+ __aligned_u64 ref_ctr_offsets;
+ __aligned_u64 cookies;
+ __u32 cnt;
+ __u32 flags;
+ __u32 pid;
+ } uprobe_multi;
};
} link_create;
@@ -4161,9 +4226,6 @@ union bpf_attr {
* **-EOPNOTSUPP** if the operation is not supported, for example
* a call from outside of TC ingress.
*
- * **-ESOCKTNOSUPPORT** if the socket type is not supported
- * (reuseport).
- *
* long bpf_sk_assign(struct bpf_sk_lookup *ctx, struct bpf_sock *sk, u64 flags)
* Description
* Helper is overloaded depending on BPF program type. This
@@ -5046,9 +5108,14 @@ union bpf_attr {
* u64 bpf_get_func_ip(void *ctx)
* Description
* Get address of the traced function (for tracing and kprobe programs).
+ *
+ * When called for kprobe program attached as uprobe it returns
+ * probe address for both entry and return uprobe.
+ *
* Return
- * Address of the traced function.
+ * Address of the traced function for kprobe.
* 0 for kprobes placed within the function (not at the entry).
+ * Address of the probe for uprobe and return uprobe.
*
* u64 bpf_get_attach_cookie(void *ctx)
* Description
@@ -6189,6 +6256,19 @@ struct bpf_sock_tuple {
};
};
+/* (Simplified) user return codes for tcx prog type.
+ * A valid tcx program must return one of these defined values. All other
+ * return codes are reserved for future use. Must remain compatible with
+ * their TC_ACT_* counter-parts. For compatibility in behavior, unknown
+ * return codes are mapped to TCX_NEXT.
+ */
+enum tcx_action_base {
+ TCX_NEXT = -1,
+ TCX_PASS = 0,
+ TCX_DROP = 2,
+ TCX_REDIRECT = 7,
+};
+
struct bpf_xdp_sock {
__u32 queue_id;
};
@@ -6441,6 +6521,40 @@ struct bpf_link_info {
__s32 priority;
__u32 flags;
} netfilter;
+ struct {
+ __aligned_u64 addrs;
+ __u32 count; /* in/out: kprobe_multi function count */
+ __u32 flags;
+ } kprobe_multi;
+ struct {
+ __u32 type; /* enum bpf_perf_event_type */
+ __u32 :32;
+ union {
+ struct {
+ __aligned_u64 file_name; /* in/out */
+ __u32 name_len;
+ __u32 offset; /* offset from file_name */
+ } uprobe; /* BPF_PERF_EVENT_UPROBE, BPF_PERF_EVENT_URETPROBE */
+ struct {
+ __aligned_u64 func_name; /* in/out */
+ __u32 name_len;
+ __u32 offset; /* offset from func_name */
+ __u64 addr;
+ } kprobe; /* BPF_PERF_EVENT_KPROBE, BPF_PERF_EVENT_KRETPROBE */
+ struct {
+ __aligned_u64 tp_name; /* in/out */
+ __u32 name_len;
+ } tracepoint; /* BPF_PERF_EVENT_TRACEPOINT */
+ struct {
+ __u64 config;
+ __u32 type;
+ } event; /* BPF_PERF_EVENT_EVENT */
+ };
+ } perf_event;
+ struct {
+ __u32 ifindex;
+ __u32 attach_type;
+ } tcx;
};
} __attribute__((aligned(8)));
@@ -7014,6 +7128,7 @@ struct bpf_list_head {
struct bpf_list_node {
__u64 :64;
__u64 :64;
+ __u64 :64;
} __attribute__((aligned(8)));
struct bpf_rb_root {
@@ -7025,6 +7140,7 @@ struct bpf_rb_node {
__u64 :64;
__u64 :64;
__u64 :64;
+ __u64 :64;
} __attribute__((aligned(8)));
struct bpf_refcount {
diff --git a/contrib/libs/linux-headers/linux/btrfs_tree.h b/contrib/libs/linux-headers/linux/btrfs_tree.h
index 3466e1670b..46b40848ac 100644
--- a/contrib/libs/linux-headers/linux/btrfs_tree.h
+++ b/contrib/libs/linux-headers/linux/btrfs_tree.h
@@ -216,7 +216,11 @@
#define BTRFS_EXTENT_DATA_REF_KEY 178
-#define BTRFS_EXTENT_REF_V0_KEY 180
+/*
+ * Obsolete key. Defintion removed in 6.6, value may be reused in the future.
+ *
+ * #define BTRFS_EXTENT_REF_V0_KEY 180
+ */
#define BTRFS_SHARED_BLOCK_REF_KEY 182
diff --git a/contrib/libs/linux-headers/linux/cgroupstats.h b/contrib/libs/linux-headers/linux/cgroupstats.h
index aa306e4cd6..80b2c85944 100644
--- a/contrib/libs/linux-headers/linux/cgroupstats.h
+++ b/contrib/libs/linux-headers/linux/cgroupstats.h
@@ -24,8 +24,6 @@
* basis. This data is shared using taskstats.
*
* Most of these states are derived by looking at the task->state value
- * For the nr_io_wait state, a flag in the delay accounting structure
- * indicates that the task is waiting on IO
*
* Each member is aligned to a 8 byte boundary.
*/
diff --git a/contrib/libs/linux-headers/linux/cn_proc.h b/contrib/libs/linux-headers/linux/cn_proc.h
index 46fe054d31..85a79b58a2 100644
--- a/contrib/libs/linux-headers/linux/cn_proc.h
+++ b/contrib/libs/linux-headers/linux/cn_proc.h
@@ -30,6 +30,49 @@ enum proc_cn_mcast_op {
PROC_CN_MCAST_IGNORE = 2
};
+#define PROC_EVENT_ALL (PROC_EVENT_FORK | PROC_EVENT_EXEC | PROC_EVENT_UID | \
+ PROC_EVENT_GID | PROC_EVENT_SID | PROC_EVENT_PTRACE | \
+ PROC_EVENT_COMM | PROC_EVENT_NONZERO_EXIT | \
+ PROC_EVENT_COREDUMP | PROC_EVENT_EXIT)
+
+/*
+ * If you add an entry in proc_cn_event, make sure you add it in
+ * PROC_EVENT_ALL above as well.
+ */
+enum proc_cn_event {
+ /* Use successive bits so the enums can be used to record
+ * sets of events as well
+ */
+ PROC_EVENT_NONE = 0x00000000,
+ PROC_EVENT_FORK = 0x00000001,
+ PROC_EVENT_EXEC = 0x00000002,
+ PROC_EVENT_UID = 0x00000004,
+ PROC_EVENT_GID = 0x00000040,
+ PROC_EVENT_SID = 0x00000080,
+ PROC_EVENT_PTRACE = 0x00000100,
+ PROC_EVENT_COMM = 0x00000200,
+ /* "next" should be 0x00000400 */
+ /* "last" is the last process event: exit,
+ * while "next to last" is coredumping event
+ * before that is report only if process dies
+ * with non-zero exit status
+ */
+ PROC_EVENT_NONZERO_EXIT = 0x20000000,
+ PROC_EVENT_COREDUMP = 0x40000000,
+ PROC_EVENT_EXIT = 0x80000000
+};
+
+struct proc_input {
+ enum proc_cn_mcast_op mcast_op;
+ enum proc_cn_event event_type;
+};
+
+static __inline__ enum proc_cn_event valid_event(enum proc_cn_event ev_type)
+{
+ ev_type &= PROC_EVENT_ALL;
+ return ev_type;
+}
+
/*
* From the user's point of view, the process
* ID is the thread group ID and thread ID is the internal
@@ -44,24 +87,7 @@ enum proc_cn_mcast_op {
*/
struct proc_event {
- enum what {
- /* Use successive bits so the enums can be used to record
- * sets of events as well
- */
- PROC_EVENT_NONE = 0x00000000,
- PROC_EVENT_FORK = 0x00000001,
- PROC_EVENT_EXEC = 0x00000002,
- PROC_EVENT_UID = 0x00000004,
- PROC_EVENT_GID = 0x00000040,
- PROC_EVENT_SID = 0x00000080,
- PROC_EVENT_PTRACE = 0x00000100,
- PROC_EVENT_COMM = 0x00000200,
- /* "next" should be 0x00000400 */
- /* "last" is the last process event: exit,
- * while "next to last" is coredumping event */
- PROC_EVENT_COREDUMP = 0x40000000,
- PROC_EVENT_EXIT = 0x80000000
- } what;
+ enum proc_cn_event what;
__u32 cpu;
__u64 __attribute__((aligned(8))) timestamp_ns;
/* Number of nano seconds since system boot */
diff --git a/contrib/libs/linux-headers/linux/devlink.h b/contrib/libs/linux-headers/linux/devlink.h
index 45d110254e..8b9b98e750 100644
--- a/contrib/libs/linux-headers/linux/devlink.h
+++ b/contrib/libs/linux-headers/linux/devlink.h
@@ -661,6 +661,8 @@ enum devlink_resource_unit {
enum devlink_port_fn_attr_cap {
DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT,
DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT,
+ DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT,
+ DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT,
/* Add new caps above */
__DEVLINK_PORT_FN_ATTR_CAPS_MAX,
@@ -669,6 +671,8 @@ enum devlink_port_fn_attr_cap {
#define DEVLINK_PORT_FN_CAP_ROCE _BITUL(DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT)
#define DEVLINK_PORT_FN_CAP_MIGRATABLE \
_BITUL(DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT)
+#define DEVLINK_PORT_FN_CAP_IPSEC_CRYPTO _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT)
+#define DEVLINK_PORT_FN_CAP_IPSEC_PACKET _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT)
enum devlink_port_function_attr {
DEVLINK_PORT_FUNCTION_ATTR_UNSPEC,
diff --git a/contrib/libs/linux-headers/linux/dlm_plock.h b/contrib/libs/linux-headers/linux/dlm_plock.h
index 577af304b9..637b604bff 100644
--- a/contrib/libs/linux-headers/linux/dlm_plock.h
+++ b/contrib/libs/linux-headers/linux/dlm_plock.h
@@ -22,6 +22,7 @@ enum {
DLM_PLOCK_OP_LOCK = 1,
DLM_PLOCK_OP_UNLOCK,
DLM_PLOCK_OP_GET,
+ DLM_PLOCK_OP_CANCEL,
};
#define DLM_PLOCK_FL_CLOSE 1
diff --git a/contrib/libs/linux-headers/linux/elf-fdpic.h b/contrib/libs/linux-headers/linux/elf-fdpic.h
index d78419dcf0..6c0df5121a 100644
--- a/contrib/libs/linux-headers/linux/elf-fdpic.h
+++ b/contrib/libs/linux-headers/linux/elf-fdpic.h
@@ -32,4 +32,19 @@ struct elf32_fdpic_loadmap {
#define ELF32_FDPIC_LOADMAP_VERSION 0x0000
+/* segment mappings for ELF FDPIC libraries/executables/interpreters */
+struct elf64_fdpic_loadseg {
+ Elf64_Addr addr; /* core address to which mapped */
+ Elf64_Addr p_vaddr; /* VMA recorded in file */
+ Elf64_Word p_memsz; /* allocation size recorded in file */
+};
+
+struct elf64_fdpic_loadmap {
+ Elf64_Half version; /* version of these structures, just in case... */
+ Elf64_Half nsegs; /* number of segments */
+ struct elf64_fdpic_loadseg segs[];
+};
+
+#define ELF64_FDPIC_LOADMAP_VERSION 0x0000
+
#endif /* _LINUX_ELF_FDPIC_H */
diff --git a/contrib/libs/linux-headers/linux/elf.h b/contrib/libs/linux-headers/linux/elf.h
index 0b23445430..2992ee4797 100644
--- a/contrib/libs/linux-headers/linux/elf.h
+++ b/contrib/libs/linux-headers/linux/elf.h
@@ -409,6 +409,8 @@ typedef struct elf64_shdr {
#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */
#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */
#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */
+/* Old binutils treats 0x203 as a CET state */
+#define NT_X86_SHSTK 0x204 /* x86 SHSTK state */
#define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */
#define NT_S390_TIMER 0x301 /* s390 timer register */
#define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */
diff --git a/contrib/libs/linux-headers/linux/fsi.h b/contrib/libs/linux-headers/linux/fsi.h
index 021f08aa15..6e7184c235 100644
--- a/contrib/libs/linux-headers/linux/fsi.h
+++ b/contrib/libs/linux-headers/linux/fsi.h
@@ -60,6 +60,16 @@ struct scom_access {
*/
/**
+ * FSI_SBEFIFO_CMD_TIMEOUT sets the timeout for writing data to the SBEFIFO.
+ *
+ * The command timeout is specified in seconds. The minimum value of command
+ * timeout is 1 seconds (default) and the maximum value of command timeout is
+ * 120 seconds. A command timeout of 0 will reset the value to the default of
+ * 1 seconds.
+ */
+#define FSI_SBEFIFO_CMD_TIMEOUT_SECONDS _IOW('s', 0x01, __u32)
+
+/**
* FSI_SBEFIFO_READ_TIMEOUT sets the read timeout for response from SBE.
*
* The read timeout is specified in seconds. The minimum value of read
diff --git a/contrib/libs/linux-headers/linux/fuse.h b/contrib/libs/linux-headers/linux/fuse.h
index 2c8b8de9c2..6b9793842c 100644
--- a/contrib/libs/linux-headers/linux/fuse.h
+++ b/contrib/libs/linux-headers/linux/fuse.h
@@ -207,6 +207,10 @@
* - add FUSE_EXT_GROUPS
* - add FUSE_CREATE_SUPP_GROUP
* - add FUSE_HAS_EXPIRE_ONLY
+ *
+ * 7.39
+ * - add FUSE_DIRECT_IO_RELAX
+ * - add FUSE_STATX and related structures
*/
#ifndef _LINUX_FUSE_H
@@ -238,7 +242,7 @@
#define FUSE_KERNEL_VERSION 7
/** Minor version number of this interface */
-#define FUSE_KERNEL_MINOR_VERSION 38
+#define FUSE_KERNEL_MINOR_VERSION 39
/** The node ID of the root inode */
#define FUSE_ROOT_ID 1
@@ -265,6 +269,40 @@ struct fuse_attr {
uint32_t flags;
};
+/*
+ * The following structures are bit-for-bit compatible with the statx(2) ABI in
+ * Linux.
+ */
+struct fuse_sx_time {
+ int64_t tv_sec;
+ uint32_t tv_nsec;
+ int32_t __reserved;
+};
+
+struct fuse_statx {
+ uint32_t mask;
+ uint32_t blksize;
+ uint64_t attributes;
+ uint32_t nlink;
+ uint32_t uid;
+ uint32_t gid;
+ uint16_t mode;
+ uint16_t __spare0[1];
+ uint64_t ino;
+ uint64_t size;
+ uint64_t blocks;
+ uint64_t attributes_mask;
+ struct fuse_sx_time atime;
+ struct fuse_sx_time btime;
+ struct fuse_sx_time ctime;
+ struct fuse_sx_time mtime;
+ uint32_t rdev_major;
+ uint32_t rdev_minor;
+ uint32_t dev_major;
+ uint32_t dev_minor;
+ uint64_t __spare2[14];
+};
+
struct fuse_kstatfs {
uint64_t blocks;
uint64_t bfree;
@@ -367,6 +405,8 @@ struct fuse_file_lock {
* FUSE_CREATE_SUPP_GROUP: add supplementary group info to create, mkdir,
* symlink and mknod (single group that matches parent)
* FUSE_HAS_EXPIRE_ONLY: kernel supports expiry-only entry invalidation
+ * FUSE_DIRECT_IO_RELAX: relax restrictions in FOPEN_DIRECT_IO mode, for now
+ * allow shared mmap
*/
#define FUSE_ASYNC_READ (1 << 0)
#define FUSE_POSIX_LOCKS (1 << 1)
@@ -405,6 +445,7 @@ struct fuse_file_lock {
#define FUSE_HAS_INODE_DAX (1ULL << 33)
#define FUSE_CREATE_SUPP_GROUP (1ULL << 34)
#define FUSE_HAS_EXPIRE_ONLY (1ULL << 35)
+#define FUSE_DIRECT_IO_RELAX (1ULL << 36)
/**
* CUSE INIT request/reply flags
@@ -571,6 +612,7 @@ enum fuse_opcode {
FUSE_REMOVEMAPPING = 49,
FUSE_SYNCFS = 50,
FUSE_TMPFILE = 51,
+ FUSE_STATX = 52,
/* CUSE specific operations */
CUSE_INIT = 4096,
@@ -635,6 +677,22 @@ struct fuse_attr_out {
struct fuse_attr attr;
};
+struct fuse_statx_in {
+ uint32_t getattr_flags;
+ uint32_t reserved;
+ uint64_t fh;
+ uint32_t sx_flags;
+ uint32_t sx_mask;
+};
+
+struct fuse_statx_out {
+ uint64_t attr_valid; /* Cache timeout for the attributes */
+ uint32_t attr_valid_nsec;
+ uint32_t flags;
+ uint64_t spare[2];
+ struct fuse_statx stat;
+};
+
#define FUSE_COMPAT_MKNOD_IN_SIZE 8
struct fuse_mknod_in {
diff --git a/contrib/libs/linux-headers/linux/gsmmux.h b/contrib/libs/linux-headers/linux/gsmmux.h
index eb67884e5f..4c878d84db 100644
--- a/contrib/libs/linux-headers/linux/gsmmux.h
+++ b/contrib/libs/linux-headers/linux/gsmmux.h
@@ -2,10 +2,45 @@
#ifndef _LINUX_GSMMUX_H
#define _LINUX_GSMMUX_H
+#include <linux/const.h>
#include <linux/if.h>
#include <linux/ioctl.h>
#include <linux/types.h>
+/*
+ * flags definition for n_gsm
+ *
+ * Used by:
+ * struct gsm_config_ext.flags
+ * struct gsm_dlci_config.flags
+ */
+/* Forces a DLCI reset if set. Otherwise, a DLCI reset is only done if
+ * incompatible settings were provided. Always cleared on retrieval.
+ */
+#define GSM_FL_RESTART _BITUL(0)
+
+/**
+ * struct gsm_config - n_gsm basic configuration parameters
+ *
+ * This structure is used in combination with GSMIOC_GETCONF and GSMIOC_SETCONF
+ * to retrieve and set the basic parameters of an n_gsm ldisc.
+ * struct gsm_config_ext can be used to configure extended ldisc parameters.
+ *
+ * All timers are in units of 1/100th of a second.
+ *
+ * @adaption: Convergence layer type
+ * @encapsulation: Framing (0 = basic option, 1 = advanced option)
+ * @initiator: Initiator or responder
+ * @t1: Acknowledgment timer
+ * @t2: Response timer for multiplexer control channel
+ * @t3: Response timer for wake-up procedure
+ * @n2: Maximum number of retransmissions
+ * @mru: Maximum incoming frame payload size
+ * @mtu: Maximum outgoing frame payload size
+ * @k: Window size
+ * @i: Frame type (1 = UIH, 2 = UI)
+ * @unused: Can not be used
+ */
struct gsm_config
{
unsigned int adaption;
@@ -19,18 +54,32 @@ struct gsm_config
unsigned int mtu;
unsigned int k;
unsigned int i;
- unsigned int unused[8]; /* Can not be used */
+ unsigned int unused[8];
};
#define GSMIOC_GETCONF _IOR('G', 0, struct gsm_config)
#define GSMIOC_SETCONF _IOW('G', 1, struct gsm_config)
+/**
+ * struct gsm_netconfig - n_gsm network configuration parameters
+ *
+ * This structure is used in combination with GSMIOC_ENABLE_NET and
+ * GSMIOC_DISABLE_NET to enable or disable a network data connection
+ * over a mux virtual tty channel. This is for modems that support
+ * data connections with raw IP frames instead of PPP.
+ *
+ * @adaption: Adaption to use in network mode.
+ * @protocol: Protocol to use - only ETH_P_IP supported.
+ * @unused2: Can not be used.
+ * @if_name: Interface name format string.
+ * @unused: Can not be used.
+ */
struct gsm_netconfig {
- unsigned int adaption; /* Adaption to use in network mode */
- unsigned short protocol;/* Protocol to use - only ETH_P_IP supported */
- unsigned short unused2; /* Can not be used */
- char if_name[IFNAMSIZ]; /* interface name format string */
- __u8 unused[28]; /* Can not be used */
+ unsigned int adaption;
+ unsigned short protocol;
+ unsigned short unused2;
+ char if_name[IFNAMSIZ];
+ __u8 unused[28];
};
#define GSMIOC_ENABLE_NET _IOW('G', 2, struct gsm_netconfig)
@@ -39,26 +88,57 @@ struct gsm_netconfig {
/* get the base tty number for a configured gsmmux tty */
#define GSMIOC_GETFIRST _IOR('G', 4, __u32)
+/**
+ * struct gsm_config_ext - n_gsm extended configuration parameters
+ *
+ * This structure is used in combination with GSMIOC_GETCONF_EXT and
+ * GSMIOC_SETCONF_EXT to retrieve and set the extended parameters of an
+ * n_gsm ldisc.
+ *
+ * All timers are in units of 1/100th of a second.
+ *
+ * @keep_alive: Control channel keep-alive in 1/100th of a second (0 to disable).
+ * @wait_config: Wait for DLCI config before opening virtual link?
+ * @flags: Mux specific flags.
+ * @reserved: For future use, must be initialized to zero.
+ */
struct gsm_config_ext {
- __u32 keep_alive; /* Control channel keep-alive in 1/100th of a
- * second (0 to disable)
- */
- __u32 wait_config; /* Wait for DLCI config before opening virtual link? */
- __u32 reserved[6]; /* For future use, must be initialized to zero */
+ __u32 keep_alive;
+ __u32 wait_config;
+ __u32 flags;
+ __u32 reserved[5];
};
#define GSMIOC_GETCONF_EXT _IOR('G', 5, struct gsm_config_ext)
#define GSMIOC_SETCONF_EXT _IOW('G', 6, struct gsm_config_ext)
-/* Set channel accordingly before calling GSMIOC_GETCONF_DLCI. */
+/**
+ * struct gsm_dlci_config - n_gsm channel configuration parameters
+ *
+ * This structure is used in combination with GSMIOC_GETCONF_DLCI and
+ * GSMIOC_SETCONF_DLCI to retrieve and set the channel specific parameters
+ * of an n_gsm ldisc.
+ *
+ * Set the channel accordingly before calling GSMIOC_GETCONF_DLCI.
+ *
+ * @channel: DLCI (0 for the associated DLCI).
+ * @adaption: Convergence layer type.
+ * @mtu: Maximum transfer unit.
+ * @priority: Priority (0 for default value).
+ * @i: Frame type (1 = UIH, 2 = UI).
+ * @k: Window size (0 for default value).
+ * @flags: DLCI specific flags.
+ * @reserved: For future use, must be initialized to zero.
+ */
struct gsm_dlci_config {
- __u32 channel; /* DLCI (0 for the associated DLCI) */
- __u32 adaption; /* Convergence layer type */
- __u32 mtu; /* Maximum transfer unit */
- __u32 priority; /* Priority (0 for default value) */
- __u32 i; /* Frame type (1 = UIH, 2 = UI) */
- __u32 k; /* Window size (0 for default value) */
- __u32 reserved[8]; /* For future use, must be initialized to zero */
+ __u32 channel;
+ __u32 adaption;
+ __u32 mtu;
+ __u32 priority;
+ __u32 i;
+ __u32 k;
+ __u32 flags;
+ __u32 reserved[7];
};
#define GSMIOC_GETCONF_DLCI _IOWR('G', 7, struct gsm_dlci_config)
diff --git a/contrib/libs/linux-headers/linux/gtp.h b/contrib/libs/linux-headers/linux/gtp.h
index d6875e2070..7c1a57024b 100644
--- a/contrib/libs/linux-headers/linux/gtp.h
+++ b/contrib/libs/linux-headers/linux/gtp.h
@@ -33,6 +33,6 @@ enum gtp_attrs {
GTPA_PAD,
__GTPA_MAX,
};
-#define GTPA_MAX (__GTPA_MAX + 1)
+#define GTPA_MAX (__GTPA_MAX - 1)
#endif /* _LINUX_GTP_H_ */
diff --git a/contrib/libs/linux-headers/linux/if_link.h b/contrib/libs/linux-headers/linux/if_link.h
index 02af33ceb3..c2ca7a6add 100644
--- a/contrib/libs/linux-headers/linux/if_link.h
+++ b/contrib/libs/linux-headers/linux/if_link.h
@@ -568,6 +568,7 @@ enum {
IFLA_BRPORT_MCAST_N_GROUPS,
IFLA_BRPORT_MCAST_MAX_GROUPS,
IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
+ IFLA_BRPORT_BACKUP_NHID,
__IFLA_BRPORT_MAX
};
#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
diff --git a/contrib/libs/linux-headers/linux/if_xdp.h b/contrib/libs/linux-headers/linux/if_xdp.h
index a78a8096f4..8d48863472 100644
--- a/contrib/libs/linux-headers/linux/if_xdp.h
+++ b/contrib/libs/linux-headers/linux/if_xdp.h
@@ -25,6 +25,12 @@
* application.
*/
#define XDP_USE_NEED_WAKEUP (1 << 3)
+/* By setting this option, userspace application indicates that it can
+ * handle multiple descriptors per packet thus enabling AF_XDP to split
+ * multi-buffer XDP frames into multiple Rx descriptors. Without this set
+ * such frames will be dropped.
+ */
+#define XDP_USE_SG (1 << 4)
/* Flags for xsk_umem_config flags */
#define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0)
@@ -108,4 +114,11 @@ struct xdp_desc {
/* UMEM descriptor is __u64 */
+/* Flag indicating that the packet continues with the buffer pointed out by the
+ * next frame in the ring. The end of the packet is signalled by setting this
+ * bit to zero. For single buffer packets, every descriptor has 'options' set
+ * to 0 and this maintains backward compatibility.
+ */
+#define XDP_PKT_CONTD (1 << 0)
+
#endif /* _LINUX_IF_XDP_H */
diff --git a/contrib/libs/linux-headers/linux/io_uring.h b/contrib/libs/linux-headers/linux/io_uring.h
index 08720c7bd9..8e61f8b7c2 100644
--- a/contrib/libs/linux-headers/linux/io_uring.h
+++ b/contrib/libs/linux-headers/linux/io_uring.h
@@ -185,6 +185,11 @@ enum {
*/
#define IORING_SETUP_REGISTERED_FD_ONLY (1U << 15)
+/*
+ * Removes indirection through the SQ index array.
+ */
+#define IORING_SETUP_NO_SQARRAY (1U << 16)
+
enum io_uring_op {
IORING_OP_NOP,
IORING_OP_READV,
@@ -299,11 +304,15 @@ enum io_uring_op {
* request 'user_data'
* IORING_ASYNC_CANCEL_ANY Match any request
* IORING_ASYNC_CANCEL_FD_FIXED 'fd' passed in is a fixed descriptor
+ * IORING_ASYNC_CANCEL_USERDATA Match on user_data, default for no other key
+ * IORING_ASYNC_CANCEL_OP Match request based on opcode
*/
#define IORING_ASYNC_CANCEL_ALL (1U << 0)
#define IORING_ASYNC_CANCEL_FD (1U << 1)
#define IORING_ASYNC_CANCEL_ANY (1U << 2)
#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
+#define IORING_ASYNC_CANCEL_USERDATA (1U << 4)
+#define IORING_ASYNC_CANCEL_OP (1U << 5)
/*
* send/sendmsg and recv/recvmsg flags (sqe->ioprio)
@@ -697,7 +706,9 @@ struct io_uring_sync_cancel_reg {
__s32 fd;
__u32 flags;
struct __kernel_timespec timeout;
- __u64 pad[4];
+ __u8 opcode;
+ __u8 pad[7];
+ __u64 pad2[3];
};
/*
@@ -717,6 +728,14 @@ struct io_uring_recvmsg_out {
__u32 flags;
};
+/*
+ * Argument for IORING_OP_URING_CMD when file is a socket
+ */
+enum {
+ SOCKET_URING_OP_SIOCINQ = 0,
+ SOCKET_URING_OP_SIOCOUTQ,
+};
+
#ifdef __cplusplus
}
#endif
diff --git a/contrib/libs/linux-headers/linux/iommufd.h b/contrib/libs/linux-headers/linux/iommufd.h
index 396ee7fe01..218bf7ac98 100644
--- a/contrib/libs/linux-headers/linux/iommufd.h
+++ b/contrib/libs/linux-headers/linux/iommufd.h
@@ -45,6 +45,8 @@ enum {
IOMMUFD_CMD_IOAS_UNMAP,
IOMMUFD_CMD_OPTION,
IOMMUFD_CMD_VFIO_IOAS,
+ IOMMUFD_CMD_HWPT_ALLOC,
+ IOMMUFD_CMD_GET_HW_INFO,
};
/**
@@ -344,4 +346,99 @@ struct iommu_vfio_ioas {
__u16 __reserved;
};
#define IOMMU_VFIO_IOAS _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VFIO_IOAS)
+
+/**
+ * struct iommu_hwpt_alloc - ioctl(IOMMU_HWPT_ALLOC)
+ * @size: sizeof(struct iommu_hwpt_alloc)
+ * @flags: Must be 0
+ * @dev_id: The device to allocate this HWPT for
+ * @pt_id: The IOAS to connect this HWPT to
+ * @out_hwpt_id: The ID of the new HWPT
+ * @__reserved: Must be 0
+ *
+ * Explicitly allocate a hardware page table object. This is the same object
+ * type that is returned by iommufd_device_attach() and represents the
+ * underlying iommu driver's iommu_domain kernel object.
+ *
+ * A HWPT will be created with the IOVA mappings from the given IOAS.
+ */
+struct iommu_hwpt_alloc {
+ __u32 size;
+ __u32 flags;
+ __u32 dev_id;
+ __u32 pt_id;
+ __u32 out_hwpt_id;
+ __u32 __reserved;
+};
+#define IOMMU_HWPT_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_ALLOC)
+
+/**
+ * struct iommu_hw_info_vtd - Intel VT-d hardware information
+ *
+ * @flags: Must be 0
+ * @__reserved: Must be 0
+ *
+ * @cap_reg: Value of Intel VT-d capability register defined in VT-d spec
+ * section 11.4.2 Capability Register.
+ * @ecap_reg: Value of Intel VT-d capability register defined in VT-d spec
+ * section 11.4.3 Extended Capability Register.
+ *
+ * User needs to understand the Intel VT-d specification to decode the
+ * register value.
+ */
+struct iommu_hw_info_vtd {
+ __u32 flags;
+ __u32 __reserved;
+ __aligned_u64 cap_reg;
+ __aligned_u64 ecap_reg;
+};
+
+/**
+ * enum iommu_hw_info_type - IOMMU Hardware Info Types
+ * @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that do not report hardware
+ * info
+ * @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type
+ */
+enum iommu_hw_info_type {
+ IOMMU_HW_INFO_TYPE_NONE,
+ IOMMU_HW_INFO_TYPE_INTEL_VTD,
+};
+
+/**
+ * struct iommu_hw_info - ioctl(IOMMU_GET_HW_INFO)
+ * @size: sizeof(struct iommu_hw_info)
+ * @flags: Must be 0
+ * @dev_id: The device bound to the iommufd
+ * @data_len: Input the length of a user buffer in bytes. Output the length of
+ * data that kernel supports
+ * @data_uptr: User pointer to a user-space buffer used by the kernel to fill
+ * the iommu type specific hardware information data
+ * @out_data_type: Output the iommu hardware info type as defined in the enum
+ * iommu_hw_info_type.
+ * @__reserved: Must be 0
+ *
+ * Query an iommu type specific hardware information data from an iommu behind
+ * a given device that has been bound to iommufd. This hardware info data will
+ * be used to sync capabilities between the virtual iommu and the physical
+ * iommu, e.g. a nested translation setup needs to check the hardware info, so
+ * a guest stage-1 page table can be compatible with the physical iommu.
+ *
+ * To capture an iommu type specific hardware information data, @data_uptr and
+ * its length @data_len must be provided. Trailing bytes will be zeroed if the
+ * user buffer is larger than the data that kernel has. Otherwise, kernel only
+ * fills the buffer using the given length in @data_len. If the ioctl succeeds,
+ * @data_len will be updated to the length that kernel actually supports,
+ * @out_data_type will be filled to decode the data filled in the buffer
+ * pointed by @data_uptr. Input @data_len == zero is allowed.
+ */
+struct iommu_hw_info {
+ __u32 size;
+ __u32 flags;
+ __u32 dev_id;
+ __u32 data_len;
+ __aligned_u64 data_uptr;
+ __u32 out_data_type;
+ __u32 __reserved;
+};
+#define IOMMU_GET_HW_INFO _IO(IOMMUFD_TYPE, IOMMUFD_CMD_GET_HW_INFO)
#endif
diff --git a/contrib/libs/linux-headers/linux/kexec.h b/contrib/libs/linux-headers/linux/kexec.h
index 9e2ae64134..d0a571c0f7 100644
--- a/contrib/libs/linux-headers/linux/kexec.h
+++ b/contrib/libs/linux-headers/linux/kexec.h
@@ -12,6 +12,7 @@
/* kexec flags for different usage scenarios */
#define KEXEC_ON_CRASH 0x00000001
#define KEXEC_PRESERVE_CONTEXT 0x00000002
+#define KEXEC_UPDATE_ELFCOREHDR 0x00000004
#define KEXEC_ARCH_MASK 0xffff0000
/*
diff --git a/contrib/libs/linux-headers/linux/kvm_arm64.h b/contrib/libs/linux-headers/linux/kvm_arm64.h
index 1f3f3333a4..0d74ee999a 100644
--- a/contrib/libs/linux-headers/linux/kvm_arm64.h
+++ b/contrib/libs/linux-headers/linux/kvm_arm64.h
@@ -1414,9 +1414,16 @@ struct kvm_device_attr {
__u64 addr; /* userspace address of attr data */
};
-#define KVM_DEV_VFIO_GROUP 1
-#define KVM_DEV_VFIO_GROUP_ADD 1
-#define KVM_DEV_VFIO_GROUP_DEL 2
+#define KVM_DEV_VFIO_FILE 1
+
+#define KVM_DEV_VFIO_FILE_ADD 1
+#define KVM_DEV_VFIO_FILE_DEL 2
+
+/* KVM_DEV_VFIO_GROUP aliases are for compile time uapi compatibility */
+#define KVM_DEV_VFIO_GROUP KVM_DEV_VFIO_FILE
+
+#define KVM_DEV_VFIO_GROUP_ADD KVM_DEV_VFIO_FILE_ADD
+#define KVM_DEV_VFIO_GROUP_DEL KVM_DEV_VFIO_FILE_DEL
#define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3
enum kvm_device_type {
diff --git a/contrib/libs/linux-headers/linux/kvm_powerpc.h b/contrib/libs/linux-headers/linux/kvm_powerpc.h
index 1f3f3333a4..0d74ee999a 100644
--- a/contrib/libs/linux-headers/linux/kvm_powerpc.h
+++ b/contrib/libs/linux-headers/linux/kvm_powerpc.h
@@ -1414,9 +1414,16 @@ struct kvm_device_attr {
__u64 addr; /* userspace address of attr data */
};
-#define KVM_DEV_VFIO_GROUP 1
-#define KVM_DEV_VFIO_GROUP_ADD 1
-#define KVM_DEV_VFIO_GROUP_DEL 2
+#define KVM_DEV_VFIO_FILE 1
+
+#define KVM_DEV_VFIO_FILE_ADD 1
+#define KVM_DEV_VFIO_FILE_DEL 2
+
+/* KVM_DEV_VFIO_GROUP aliases are for compile time uapi compatibility */
+#define KVM_DEV_VFIO_GROUP KVM_DEV_VFIO_FILE
+
+#define KVM_DEV_VFIO_GROUP_ADD KVM_DEV_VFIO_FILE_ADD
+#define KVM_DEV_VFIO_GROUP_DEL KVM_DEV_VFIO_FILE_DEL
#define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3
enum kvm_device_type {
diff --git a/contrib/libs/linux-headers/linux/kvm_x86.h b/contrib/libs/linux-headers/linux/kvm_x86.h
index 1f3f3333a4..0d74ee999a 100644
--- a/contrib/libs/linux-headers/linux/kvm_x86.h
+++ b/contrib/libs/linux-headers/linux/kvm_x86.h
@@ -1414,9 +1414,16 @@ struct kvm_device_attr {
__u64 addr; /* userspace address of attr data */
};
-#define KVM_DEV_VFIO_GROUP 1
-#define KVM_DEV_VFIO_GROUP_ADD 1
-#define KVM_DEV_VFIO_GROUP_DEL 2
+#define KVM_DEV_VFIO_FILE 1
+
+#define KVM_DEV_VFIO_FILE_ADD 1
+#define KVM_DEV_VFIO_FILE_DEL 2
+
+/* KVM_DEV_VFIO_GROUP aliases are for compile time uapi compatibility */
+#define KVM_DEV_VFIO_GROUP KVM_DEV_VFIO_FILE
+
+#define KVM_DEV_VFIO_GROUP_ADD KVM_DEV_VFIO_FILE_ADD
+#define KVM_DEV_VFIO_GROUP_DEL KVM_DEV_VFIO_FILE_DEL
#define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3
enum kvm_device_type {
diff --git a/contrib/libs/linux-headers/linux/mdio.h b/contrib/libs/linux-headers/linux/mdio.h
index 1178e90635..d7c7bd0634 100644
--- a/contrib/libs/linux-headers/linux/mdio.h
+++ b/contrib/libs/linux-headers/linux/mdio.h
@@ -82,6 +82,8 @@
#define MDIO_AN_10BT1_AN_CTRL 526 /* 10BASE-T1 AN control register */
#define MDIO_AN_10BT1_AN_STAT 527 /* 10BASE-T1 AN status register */
#define MDIO_PMA_PMD_BT1_CTRL 2100 /* BASE-T1 PMA/PMD control register */
+#define MDIO_PCS_1000BT1_CTRL 2304 /* 1000BASE-T1 PCS control register */
+#define MDIO_PCS_1000BT1_STAT 2305 /* 1000BASE-T1 PCS status register */
/* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */
#define MDIO_PMA_LASI_RXCTRL 0x9000 /* RX_ALARM control */
@@ -332,6 +334,8 @@
#define MDIO_PCS_10T1L_CTRL_RESET 0x8000 /* PCS reset */
/* BASE-T1 PMA/PMD extended ability register. */
+#define MDIO_PMA_PMD_BT1_B100_ABLE 0x0001 /* 100BASE-T1 Ability */
+#define MDIO_PMA_PMD_BT1_B1000_ABLE 0x0002 /* 1000BASE-T1 Ability */
#define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004 /* 10BASE-T1L Ability */
/* BASE-T1 auto-negotiation advertisement register [15:0] */
@@ -373,7 +377,19 @@
#define MDIO_AN_10BT1_AN_STAT_LPA_EEE_T1L 0x4000 /* 10BASE-T1L LP EEE ability advertisement */
/* BASE-T1 PMA/PMD control register */
-#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000 /* MASTER-SLAVE config value */
+#define MDIO_PMA_PMD_BT1_CTRL_STRAP 0x000F /* Type selection (Strap) */
+#define MDIO_PMA_PMD_BT1_CTRL_STRAP_B1000 0x0001 /* Select 1000BASE-T1 */
+#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000 /* MASTER-SLAVE config value */
+
+/* 1000BASE-T1 PCS control register */
+#define MDIO_PCS_1000BT1_CTRL_LOW_POWER 0x0800 /* Low power mode */
+#define MDIO_PCS_1000BT1_CTRL_DISABLE_TX 0x4000 /* Global PMA transmit disable */
+#define MDIO_PCS_1000BT1_CTRL_RESET 0x8000 /* Software reset value */
+
+/* 1000BASE-T1 PCS status register */
+#define MDIO_PCS_1000BT1_STAT_LINK 0x0004 /* PCS Link is up */
+#define MDIO_PCS_1000BT1_STAT_FAULT 0x0080 /* There is a fault condition */
+
/* EEE Supported/Advertisement/LP Advertisement registers.
*
diff --git a/contrib/libs/linux-headers/linux/mount.h b/contrib/libs/linux-headers/linux/mount.h
index 56062aaa15..12e85706ba 100644
--- a/contrib/libs/linux-headers/linux/mount.h
+++ b/contrib/libs/linux-headers/linux/mount.h
@@ -100,8 +100,9 @@ enum fsconfig_command {
FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
- FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
+ FSCONFIG_CMD_CREATE = 6, /* Create new or reuse existing superblock */
FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
+ FSCONFIG_CMD_CREATE_EXCL = 8, /* Create new superblock, fail if reusing existing superblock */
};
/*
diff --git a/contrib/libs/linux-headers/linux/netdev.h b/contrib/libs/linux-headers/linux/netdev.h
index 85463a2840..e94668bd58 100644
--- a/contrib/libs/linux-headers/linux/netdev.h
+++ b/contrib/libs/linux-headers/linux/netdev.h
@@ -11,7 +11,7 @@
/**
* enum netdev_xdp_act
- * @NETDEV_XDP_ACT_BASIC: XDP feautues set supported by all drivers
+ * @NETDEV_XDP_ACT_BASIC: XDP features set supported by all drivers
* (XDP_ABORTED, XDP_DROP, XDP_PASS, XDP_TX)
* @NETDEV_XDP_ACT_REDIRECT: The netdev supports XDP_REDIRECT
* @NETDEV_XDP_ACT_NDO_XMIT: This feature informs if netdev implements
@@ -34,6 +34,7 @@ enum netdev_xdp_act {
NETDEV_XDP_ACT_RX_SG = 32,
NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
+ /* private: */
NETDEV_XDP_ACT_MASK = 127,
};
@@ -41,6 +42,7 @@ enum {
NETDEV_A_DEV_IFINDEX = 1,
NETDEV_A_DEV_PAD,
NETDEV_A_DEV_XDP_FEATURES,
+ NETDEV_A_DEV_XDP_ZC_MAX_SEGS,
__NETDEV_A_DEV_MAX,
NETDEV_A_DEV_MAX = (__NETDEV_A_DEV_MAX - 1)
diff --git a/contrib/libs/linux-headers/linux/netfilter/nf_tables.h b/contrib/libs/linux-headers/linux/netfilter/nf_tables.h
index 8466c2a993..ca30232b7b 100644
--- a/contrib/libs/linux-headers/linux/netfilter/nf_tables.h
+++ b/contrib/libs/linux-headers/linux/netfilter/nf_tables.h
@@ -263,6 +263,7 @@ enum nft_chain_attributes {
* @NFTA_RULE_USERDATA: user data (NLA_BINARY, NFT_USERDATA_MAXLEN)
* @NFTA_RULE_ID: uniquely identifies a rule in a transaction (NLA_U32)
* @NFTA_RULE_POSITION_ID: transaction unique identifier of the previous rule (NLA_U32)
+ * @NFTA_RULE_CHAIN_ID: add the rule to chain by ID, alternative to @NFTA_RULE_CHAIN (NLA_U32)
*/
enum nft_rule_attributes {
NFTA_RULE_UNSPEC,
diff --git a/contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h b/contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h
index 1e3545de44..287e49a20e 100644
--- a/contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h
+++ b/contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h
@@ -87,7 +87,7 @@ struct ebt_entries {
/* nr. of entries */
unsigned int nentries;
/* entry list */
- char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+ char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
};
/* used for the bitmask of struct ebt_entry */
@@ -129,7 +129,7 @@ struct ebt_entry_match {
} u;
/* size of data */
unsigned int match_size;
- unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+ unsigned char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
};
struct ebt_entry_watcher {
@@ -142,7 +142,7 @@ struct ebt_entry_watcher {
} u;
/* size of data */
unsigned int watcher_size;
- unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+ unsigned char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
};
struct ebt_entry_target {
@@ -190,7 +190,7 @@ struct ebt_entry {
/* sizeof ebt_entry + matches + watchers + target */
unsigned int next_offset;
);
- unsigned char elems[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+ unsigned char elems[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
};
static __inline__ struct ebt_entry_target *
diff --git a/contrib/libs/linux-headers/linux/openvswitch.h b/contrib/libs/linux-headers/linux/openvswitch.h
index 72f3aac935..fa1d08453f 100644
--- a/contrib/libs/linux-headers/linux/openvswitch.h
+++ b/contrib/libs/linux-headers/linux/openvswitch.h
@@ -937,6 +937,7 @@ enum ovs_check_pkt_len_attr {
* start of the packet or at the start of the l3 header depending on the value
* of l3 tunnel flag in the tun_flags field of OVS_ACTION_ATTR_ADD_MPLS
* argument.
+ * @OVS_ACTION_ATTR_DROP: Explicit drop action.
*
* Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all
* fields within a header are modifiable, e.g. the IPv4 protocol and fragment
@@ -974,6 +975,7 @@ enum ovs_action_attr {
OVS_ACTION_ATTR_CHECK_PKT_LEN, /* Nested OVS_CHECK_PKT_LEN_ATTR_*. */
OVS_ACTION_ATTR_ADD_MPLS, /* struct ovs_action_add_mpls. */
OVS_ACTION_ATTR_DEC_TTL, /* Nested OVS_DEC_TTL_ATTR_*. */
+ OVS_ACTION_ATTR_DROP, /* u32 error code. */
__OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted
* from userspace. */
diff --git a/contrib/libs/linux-headers/linux/perf_event.h b/contrib/libs/linux-headers/linux/perf_event.h
index 93d5c3f59e..0afbb1bf16 100644
--- a/contrib/libs/linux-headers/linux/perf_event.h
+++ b/contrib/libs/linux-headers/linux/perf_event.h
@@ -1339,7 +1339,8 @@ union perf_mem_data_src {
#define PERF_MEM_LVLNUM_L2 0x02 /* L2 */
#define PERF_MEM_LVLNUM_L3 0x03 /* L3 */
#define PERF_MEM_LVLNUM_L4 0x04 /* L4 */
-/* 5-0x8 available */
+/* 5-0x7 available */
+#define PERF_MEM_LVLNUM_UNC 0x08 /* Uncached */
#define PERF_MEM_LVLNUM_CXL 0x09 /* CXL */
#define PERF_MEM_LVLNUM_IO 0x0a /* I/O */
#define PERF_MEM_LVLNUM_ANY_CACHE 0x0b /* Any cache */
diff --git a/contrib/libs/linux-headers/linux/pkt_cls.h b/contrib/libs/linux-headers/linux/pkt_cls.h
index 4f3932bb71..c7082cc60d 100644
--- a/contrib/libs/linux-headers/linux/pkt_cls.h
+++ b/contrib/libs/linux-headers/linux/pkt_cls.h
@@ -598,6 +598,9 @@ enum {
TCA_FLOWER_KEY_CFM, /* nested */
+ TCA_FLOWER_KEY_SPI, /* be32 */
+ TCA_FLOWER_KEY_SPI_MASK, /* be32 */
+
__TCA_FLOWER_MAX,
};
diff --git a/contrib/libs/linux-headers/linux/pkt_sched.h b/contrib/libs/linux-headers/linux/pkt_sched.h
index 00f6ff0aff..3f85ae5780 100644
--- a/contrib/libs/linux-headers/linux/pkt_sched.h
+++ b/contrib/libs/linux-headers/linux/pkt_sched.h
@@ -603,6 +603,7 @@ enum {
TCA_NETEM_JITTER64,
TCA_NETEM_SLOT,
TCA_NETEM_SLOT_DIST,
+ TCA_NETEM_PRNG_SEED,
__TCA_NETEM_MAX,
};
diff --git a/contrib/libs/linux-headers/linux/prctl.h b/contrib/libs/linux-headers/linux/prctl.h
index 3c36aeade9..370ed14b1a 100644
--- a/contrib/libs/linux-headers/linux/prctl.h
+++ b/contrib/libs/linux-headers/linux/prctl.h
@@ -283,7 +283,8 @@ struct prctl_mm_map {
/* Memory deny write / execute */
#define PR_SET_MDWE 65
-# define PR_MDWE_REFUSE_EXEC_GAIN 1
+# define PR_MDWE_REFUSE_EXEC_GAIN (1UL << 0)
+# define PR_MDWE_NO_INHERIT (1UL << 1)
#define PR_GET_MDWE 66
diff --git a/contrib/libs/linux-headers/linux/psp-dbc.h b/contrib/libs/linux-headers/linux/psp-dbc.h
new file mode 100644
index 0000000000..9b7b82bd74
--- /dev/null
+++ b/contrib/libs/linux-headers/linux/psp-dbc.h
@@ -0,0 +1,147 @@
+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
+/*
+ * Userspace interface for AMD Dynamic Boost Control (DBC)
+ *
+ * Copyright (C) 2023 Advanced Micro Devices, Inc.
+ *
+ * Author: Mario Limonciello <mario.limonciello@amd.com>
+ */
+
+#ifndef __PSP_DBC_USER_H__
+#define __PSP_DBC_USER_H__
+
+#include <linux/types.h>
+
+/**
+ * DOC: AMD Dynamic Boost Control (DBC) interface
+ */
+
+#define DBC_NONCE_SIZE 16
+#define DBC_SIG_SIZE 32
+#define DBC_UID_SIZE 16
+
+/**
+ * struct dbc_user_nonce - Nonce exchange structure (input/output).
+ * @auth_needed: Whether the PSP should authenticate this request (input).
+ * 0: no authentication, PSP will return single use nonce.
+ * 1: authentication: PSP will return multi-use nonce.
+ * @nonce: 8 byte value used for future authentication (output).
+ * @signature: Optional 32 byte signature created by software using a
+ * previous nonce (input).
+ */
+struct dbc_user_nonce {
+ __u32 auth_needed;
+ __u8 nonce[DBC_NONCE_SIZE];
+ __u8 signature[DBC_SIG_SIZE];
+} __attribute__((packed));
+
+/**
+ * struct dbc_user_setuid - UID exchange structure (input).
+ * @uid: 16 byte value representing software identity
+ * @signature: 32 byte signature created by software using a previous nonce
+ */
+struct dbc_user_setuid {
+ __u8 uid[DBC_UID_SIZE];
+ __u8 signature[DBC_SIG_SIZE];
+} __attribute__((packed));
+
+/**
+ * struct dbc_user_param - Parameter exchange structure (input/output).
+ * @msg_index: Message indicating what parameter to set or get (input)
+ * @param: 4 byte parameter, units are message specific. (input/output)
+ * @signature: 32 byte signature.
+ * - When sending a message this is to be created by software
+ * using a previous nonce (input)
+ * - For interpreting results, this signature is updated by the
+ * PSP to allow software to validate the authenticity of the
+ * results.
+ */
+struct dbc_user_param {
+ __u32 msg_index;
+ __u32 param;
+ __u8 signature[DBC_SIG_SIZE];
+} __attribute__((packed));
+
+/**
+ * Dynamic Boost Control (DBC) IOC
+ *
+ * possible return codes for all DBC IOCTLs:
+ * 0: success
+ * -EINVAL: invalid input
+ * -E2BIG: excess data passed
+ * -EFAULT: failed to copy to/from userspace
+ * -EBUSY: mailbox in recovery or in use
+ * -ENODEV: driver not bound with PSP device
+ * -EACCES: request isn't authorized
+ * -EINVAL: invalid parameter
+ * -ETIMEDOUT: request timed out
+ * -EAGAIN: invalid request for state machine
+ * -ENOENT: not implemented
+ * -ENFILE: overflow
+ * -EPERM: invalid signature
+ * -EIO: unknown error
+ */
+#define DBC_IOC_TYPE 'D'
+
+/**
+ * DBCIOCNONCE - Fetch a nonce from the PSP for authenticating commands.
+ * If a nonce is fetched without authentication it can only
+ * be utilized for one command.
+ * If a nonce is fetched with authentication it can be used
+ * for multiple requests.
+ */
+#define DBCIOCNONCE _IOWR(DBC_IOC_TYPE, 0x1, struct dbc_user_nonce)
+
+/**
+ * DBCIOCUID - Set the user ID (UID) of a calling process.
+ * The user ID is 8 bytes long. It must be programmed using a
+ * 32 byte signature built using the nonce fetched from
+ * DBCIOCNONCE.
+ * The UID can only be set once until the system is rebooted.
+ */
+#define DBCIOCUID _IOW(DBC_IOC_TYPE, 0x2, struct dbc_user_setuid)
+
+/**
+ * DBCIOCPARAM - Set or get a parameter from the PSP.
+ * This request will only work after DBCIOCUID has successfully
+ * set the UID of the calling process.
+ * Whether the parameter is set or get is controlled by the
+ * message ID in the request.
+ * This command must be sent using a 32 byte signature built
+ * using the nonce fetched from DBCIOCNONCE.
+ * When the command succeeds, the 32 byte signature will be
+ * updated by the PSP for software to authenticate the results.
+ */
+#define DBCIOCPARAM _IOWR(DBC_IOC_TYPE, 0x3, struct dbc_user_param)
+
+/**
+ * enum dbc_cmd_msg - Messages utilized by DBCIOCPARAM
+ * @PARAM_GET_FMAX_CAP: Get frequency cap (MHz)
+ * @PARAM_SET_FMAX_CAP: Set frequency cap (MHz)
+ * @PARAM_GET_PWR_CAP: Get socket power cap (mW)
+ * @PARAM_SET_PWR_CAP: Set socket power cap (mW)
+ * @PARAM_GET_GFX_MODE: Get graphics mode (0/1)
+ * @PARAM_SET_GFX_MODE: Set graphics mode (0/1)
+ * @PARAM_GET_CURR_TEMP: Get current temperature (degrees C)
+ * @PARAM_GET_FMAX_MAX: Get maximum allowed value for frequency (MHz)
+ * @PARAM_GET_FMAX_MIN: Get minimum allowed value for frequency (MHz)
+ * @PARAM_GET_SOC_PWR_MAX: Get maximum allowed value for SoC power (mw)
+ * @PARAM_GET_SOC_PWR_MIN: Get minimum allowed value for SoC power (mw)
+ * @PARAM_GET_SOC_PWR_CUR: Get current value for SoC Power (mW)
+ */
+enum dbc_cmd_msg {
+ PARAM_GET_FMAX_CAP = 0x3,
+ PARAM_SET_FMAX_CAP = 0x4,
+ PARAM_GET_PWR_CAP = 0x5,
+ PARAM_SET_PWR_CAP = 0x6,
+ PARAM_GET_GFX_MODE = 0x7,
+ PARAM_SET_GFX_MODE = 0x8,
+ PARAM_GET_CURR_TEMP = 0x9,
+ PARAM_GET_FMAX_MAX = 0xA,
+ PARAM_GET_FMAX_MIN = 0xB,
+ PARAM_GET_SOC_PWR_MAX = 0xC,
+ PARAM_GET_SOC_PWR_MIN = 0xD,
+ PARAM_GET_SOC_PWR_CUR = 0xE,
+};
+
+#endif /* __PSP_DBC_USER_H__ */
diff --git a/contrib/libs/linux-headers/linux/quota.h b/contrib/libs/linux-headers/linux/quota.h
index 1305380d6c..193872508e 100644
--- a/contrib/libs/linux-headers/linux/quota.h
+++ b/contrib/libs/linux-headers/linux/quota.h
@@ -77,6 +77,7 @@
#define QFMT_VFS_V0 2
#define QFMT_OCFS2 3
#define QFMT_VFS_V1 4
+#define QFMT_SHMEM 5
/* Size of block in which space limits are passed through the quota
* interface */
diff --git a/contrib/libs/linux-headers/linux/rpmsg.h b/contrib/libs/linux-headers/linux/rpmsg.h
index 03d724ed80..b0dd3d2196 100644
--- a/contrib/libs/linux-headers/linux/rpmsg.h
+++ b/contrib/libs/linux-headers/linux/rpmsg.h
@@ -43,4 +43,14 @@ struct rpmsg_endpoint_info {
*/
#define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info)
+/**
+ * Get the flow control state of the remote rpmsg char device.
+ */
+#define RPMSG_GET_OUTGOING_FLOWCONTROL _IOR(0xb5, 0x5, int)
+
+/**
+ * Set the flow control state of the local rpmsg char device.
+ */
+#define RPMSG_SET_INCOMING_FLOWCONTROL _IOR(0xb5, 0x6, int)
+
#endif
diff --git a/contrib/libs/linux-headers/linux/seccomp.h b/contrib/libs/linux-headers/linux/seccomp.h
index 0595945a7d..cce909572d 100644
--- a/contrib/libs/linux-headers/linux/seccomp.h
+++ b/contrib/libs/linux-headers/linux/seccomp.h
@@ -115,6 +115,8 @@ struct seccomp_notif_resp {
__u32 flags;
};
+#define SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP (1UL << 0)
+
/* valid flags for seccomp_notif_addfd */
#define SECCOMP_ADDFD_FLAG_SETFD (1UL << 0) /* Specify remote fd */
#define SECCOMP_ADDFD_FLAG_SEND (1UL << 1) /* Addfd and return it, atomically */
@@ -150,4 +152,6 @@ struct seccomp_notif_addfd {
#define SECCOMP_IOCTL_NOTIF_ADDFD SECCOMP_IOW(3, \
struct seccomp_notif_addfd)
+#define SECCOMP_IOCTL_NOTIF_SET_FLAGS SECCOMP_IOW(4, __u64)
+
#endif /* _LINUX_SECCOMP_H */
diff --git a/contrib/libs/linux-headers/linux/sed-opal.h b/contrib/libs/linux-headers/linux/sed-opal.h
index cd85d8795e..27c433a69b 100644
--- a/contrib/libs/linux-headers/linux/sed-opal.h
+++ b/contrib/libs/linux-headers/linux/sed-opal.h
@@ -49,13 +49,23 @@ enum opal_lock_flags {
OPAL_SAVE_FOR_LOCK = 0x01,
};
+enum opal_key_type {
+ OPAL_INCLUDED = 0, /* key[] is the key */
+ OPAL_KEYRING, /* key is in keyring */
+};
+
struct opal_key {
__u8 lr;
__u8 key_len;
- __u8 __align[6];
+ __u8 key_type;
+ __u8 __align[5];
__u8 key[OPAL_KEY_MAX];
};
+enum opal_revert_lsp_opts {
+ OPAL_PRESERVE = 0x01,
+};
+
struct opal_lr_act {
struct opal_key key;
__u32 sum;
@@ -173,6 +183,17 @@ struct opal_geometry {
__u8 __align[3];
};
+struct opal_discovery {
+ __u64 data;
+ __u64 size;
+};
+
+struct opal_revert_lsp {
+ struct opal_key key;
+ __u32 options;
+ __u32 __pad;
+};
+
#define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
#define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
#define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -192,5 +213,7 @@ struct opal_geometry {
#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
#define IOC_OPAL_GET_LR_STATUS _IOW('p', 237, struct opal_lr_status)
#define IOC_OPAL_GET_GEOMETRY _IOR('p', 238, struct opal_geometry)
+#define IOC_OPAL_DISCOVERY _IOW('p', 239, struct opal_discovery)
+#define IOC_OPAL_REVERT_LSP _IOW('p', 240, struct opal_revert_lsp)
#endif /* _SED_OPAL_H */
diff --git a/contrib/libs/linux-headers/linux/serial_core.h b/contrib/libs/linux-headers/linux/serial_core.h
index 2297b18b1c..e57895f65c 100644
--- a/contrib/libs/linux-headers/linux/serial_core.h
+++ b/contrib/libs/linux-headers/linux/serial_core.h
@@ -25,6 +25,8 @@
/*
* The type definitions. These are from Ted Ts'o's serial.h
+ * By historical reasons the values from 0 to 13 are defined
+ * in the include/uapi/linux/serial.h, do not define them here.
*/
#define PORT_NS16550A 14
#define PORT_XSCALE 15
@@ -94,15 +96,9 @@
#define PORT_SCIF 53
#define PORT_IRDA 54
-/* Samsung S3C2410 SoC and derivatives thereof */
-#define PORT_S3C2410 55
-
/* SGI IP22 aka Indy / Challenge S / Indigo 2 */
#define PORT_IP22ZILOG 56
-/* Sharp LH7a40x -- an ARM9 SoC series */
-#define PORT_LH7A40X 57
-
/* PPC CPM type number */
#define PORT_CPM 58
@@ -112,37 +108,23 @@
/* IBM icom */
#define PORT_ICOM 60
-/* Samsung S3C2440 SoC */
-#define PORT_S3C2440 61
-
/* Motorola i.MX SoC */
#define PORT_IMX 62
-/* Marvell MPSC (obsolete unused) */
-#define PORT_MPSC 63
-
/* TXX9 type number */
#define PORT_TXX9 64
-/* Samsung S3C2400 SoC */
-#define PORT_S3C2400 67
-
-/* M32R SIO */
-#define PORT_M32R_SIO 68
-
/*Digi jsm */
#define PORT_JSM 69
/* SUN4V Hypervisor Console */
#define PORT_SUNHV 72
-#define PORT_S3C2412 73
-
/* Xilinx uartlite */
#define PORT_UARTLITE 74
-/* Blackfin bf5xx */
-#define PORT_BFIN 75
+/* Broadcom BCM7271 UART */
+#define PORT_BCM7271 76
/* Broadcom SB1250, etc. SOC */
#define PORT_SB1250_DUART 77
@@ -150,13 +132,6 @@
/* Freescale ColdFire */
#define PORT_MCF 78
-/* Blackfin SPORT */
-#define PORT_BFIN_SPORT 79
-
-/* MN10300 on-chip UART numbers */
-#define PORT_MN10300 80
-#define PORT_MN10300_CTS 81
-
#define PORT_SC26XX 82
/* SH-SCI */
@@ -164,9 +139,6 @@
#define PORT_S3C6400 84
-/* NWPSERIAL, now removed */
-#define PORT_NWPSERIAL 85
-
/* MAX3100 */
#define PORT_MAX3100 86
@@ -225,13 +197,10 @@
/* ST ASC type numbers */
#define PORT_ASC 105
-/* Tilera TILE-Gx UART */
-#define PORT_TILEGX 106
-
/* MEN 16z135 UART */
#define PORT_MEN_Z135 107
-/* SC16IS74xx */
+/* SC16IS7xx */
#define PORT_SC16IS7XX 108
/* MESON */
@@ -243,9 +212,6 @@
/* SPRD SERIAL */
#define PORT_SPRD 111
-/* Cris v10 / v32 SoC */
-#define PORT_CRIS 112
-
/* STM32 USART */
#define PORT_STM32 113
diff --git a/contrib/libs/linux-headers/linux/smc.h b/contrib/libs/linux-headers/linux/smc.h
index ff057d5390..d2546bb814 100644
--- a/contrib/libs/linux-headers/linux/smc.h
+++ b/contrib/libs/linux-headers/linux/smc.h
@@ -107,6 +107,8 @@ enum {
enum {
SMC_NLA_LGR_R_V2_UNSPEC,
SMC_NLA_LGR_R_V2_DIRECT, /* u8 */
+ SMC_NLA_LGR_R_V2_MAX_CONNS, /* u8 */
+ SMC_NLA_LGR_R_V2_MAX_LINKS, /* u8 */
__SMC_NLA_LGR_R_V2_MAX,
SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1
};
diff --git a/contrib/libs/linux-headers/linux/stddef.h b/contrib/libs/linux-headers/linux/stddef.h
index b3d4a9c170..bf9749dd14 100644
--- a/contrib/libs/linux-headers/linux/stddef.h
+++ b/contrib/libs/linux-headers/linux/stddef.h
@@ -27,7 +27,7 @@
union { \
struct { MEMBERS } ATTRS; \
struct TAG { MEMBERS } ATTRS NAME; \
- }
+ } ATTRS
#ifdef __cplusplus
/* sizeof(struct{}) is 1 in C++, not 0, can't use C version of the macro. */
diff --git a/contrib/libs/linux-headers/linux/ublk_cmd.h b/contrib/libs/linux-headers/linux/ublk_cmd.h
index f11097744e..4643fc5630 100644
--- a/contrib/libs/linux-headers/linux/ublk_cmd.h
+++ b/contrib/libs/linux-headers/linux/ublk_cmd.h
@@ -176,6 +176,12 @@
/* Copy between request and user buffer by pread()/pwrite() */
#define UBLK_F_USER_COPY (1UL << 7)
+/*
+ * User space sets this flag when setting up the device to request zoned storage support. Kernel may
+ * deny the request by returning an error.
+ */
+#define UBLK_F_ZONED (1ULL << 8)
+
/* device state */
#define UBLK_S_DEV_DEAD 0
#define UBLK_S_DEV_LIVE 1
@@ -232,9 +238,27 @@ struct ublksrv_ctrl_dev_info {
#define UBLK_IO_OP_READ 0
#define UBLK_IO_OP_WRITE 1
#define UBLK_IO_OP_FLUSH 2
-#define UBLK_IO_OP_DISCARD 3
-#define UBLK_IO_OP_WRITE_SAME 4
-#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_OP_ZONE_OPEN 10
+#define UBLK_IO_OP_ZONE_CLOSE 11
+#define UBLK_IO_OP_ZONE_FINISH 12
+#define UBLK_IO_OP_ZONE_APPEND 13
+#define UBLK_IO_OP_ZONE_RESET_ALL 14
+#define UBLK_IO_OP_ZONE_RESET 15
+/*
+ * Construct a zone report. The report request is carried in `struct
+ * ublksrv_io_desc`. The `start_sector` field must be the first sector of a zone
+ * and shall indicate the first zone of the report. The `nr_zones` shall
+ * indicate how many zones should be reported at most. The report shall be
+ * delivered as a `struct blk_zone` array. To report fewer zones than requested,
+ * zero the last entry of the returned array.
+ *
+ * Related definitions(blk_zone, blk_zone_cond, blk_zone_type, ...) in
+ * include/uapi/linux/blkzoned.h are part of ublk UAPI.
+ */
+#define UBLK_IO_OP_REPORT_ZONES 18
#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
@@ -255,7 +279,10 @@ struct ublksrv_io_desc {
/* op: bit 0-7, flags: bit 8-31 */
__u32 op_flags;
- __u32 nr_sectors;
+ union {
+ __u32 nr_sectors;
+ __u32 nr_zones; /* for UBLK_IO_OP_REPORT_ZONES */
+ };
/* start sector for this io */
__u64 start_sector;
@@ -284,11 +311,21 @@ struct ublksrv_io_cmd {
/* io result, it is valid for COMMIT* command only */
__s32 result;
- /*
- * userspace buffer address in ublksrv daemon process, valid for
- * FETCH* command only
- */
- __u64 addr;
+ union {
+ /*
+ * userspace buffer address in ublksrv daemon process, valid for
+ * FETCH* command only
+ *
+ * `addr` should not be used when UBLK_F_USER_COPY is enabled,
+ * because userspace handles data copy by pread()/pwrite() over
+ * /dev/ublkcN. But in case of UBLK_F_ZONED, this union is
+ * re-used to pass back the allocated LBA for
+ * UBLK_IO_OP_ZONE_APPEND which actually depends on
+ * UBLK_F_USER_COPY
+ */
+ __u64 addr;
+ __u64 zone_append_lba;
+ };
};
struct ublk_param_basic {
@@ -331,6 +368,13 @@ struct ublk_param_devt {
__u32 disk_minor;
};
+struct ublk_param_zoned {
+ __u32 max_open_zones;
+ __u32 max_active_zones;
+ __u32 max_zone_append_sectors;
+ __u8 reserved[20];
+};
+
struct ublk_params {
/*
* Total length of parameters, userspace has to set 'len' for both
@@ -342,11 +386,13 @@ struct ublk_params {
#define UBLK_PARAM_TYPE_BASIC (1 << 0)
#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
#define UBLK_PARAM_TYPE_DEVT (1 << 2)
+#define UBLK_PARAM_TYPE_ZONED (1 << 3)
__u32 types; /* types of parameter included */
struct ublk_param_basic basic;
struct ublk_param_discard discard;
struct ublk_param_devt devt;
+ struct ublk_param_zoned zoned;
};
#endif
diff --git a/contrib/libs/linux-headers/linux/usb/ch11.h b/contrib/libs/linux-headers/linux/usb/ch11.h
index fb0cd24c39..ce4c83f2e6 100644
--- a/contrib/libs/linux-headers/linux/usb/ch11.h
+++ b/contrib/libs/linux-headers/linux/usb/ch11.h
@@ -15,10 +15,8 @@
/* This is arbitrary.
* From USB 2.0 spec Table 11-13, offset 7, a hub can
* have up to 255 ports. The most yet reported is 10.
- *
- * Current Wireless USB host hardware (Intel i1480 for example) allows
- * up to 22 devices to connect. Upcoming hardware might raise that
- * limit. Because the arrays need to add a bit for hub status data, we
+ * Upcoming hardware might raise that limit.
+ * Because the arrays need to add a bit for hub status data, we
* use 31, so plus one evens out to four bytes.
*/
#define USB_MAXCHILDREN 31
diff --git a/contrib/libs/linux-headers/linux/usb/ch9.h b/contrib/libs/linux-headers/linux/usb/ch9.h
index 6e3e07142a..bd6124cc0d 100644
--- a/contrib/libs/linux-headers/linux/usb/ch9.h
+++ b/contrib/libs/linux-headers/linux/usb/ch9.h
@@ -3,7 +3,7 @@
* This file holds USB constants and structures that are needed for
* USB device APIs. These are used by the USB device model, which is
* defined in chapter 9 of the USB 2.0 specification and in the
- * Wireless USB 1.0 (spread around). Linux has several APIs in C that
+ * Wireless USB 1.0 spec (now defunct). Linux has several APIs in C that
* need these:
*
* - the master/host side Linux-USB kernel driver API;
@@ -14,9 +14,6 @@
* act either as a USB master/host or as a USB slave/device. That means
* the master and slave side APIs benefit from working well together.
*
- * There's also "Wireless USB", using low power short range radios for
- * peripheral interconnection but otherwise building on the USB framework.
- *
* Note all descriptors are declared '__attribute__((packed))' so that:
*
* [a] they never get padded, either internally (USB spec writers
diff --git a/contrib/libs/linux-headers/linux/userfaultfd.h b/contrib/libs/linux-headers/linux/userfaultfd.h
index 14e402263a..59978fbaae 100644
--- a/contrib/libs/linux-headers/linux/userfaultfd.h
+++ b/contrib/libs/linux-headers/linux/userfaultfd.h
@@ -39,7 +39,8 @@
UFFD_FEATURE_MINOR_SHMEM | \
UFFD_FEATURE_EXACT_ADDRESS | \
UFFD_FEATURE_WP_HUGETLBFS_SHMEM | \
- UFFD_FEATURE_WP_UNPOPULATED)
+ UFFD_FEATURE_WP_UNPOPULATED | \
+ UFFD_FEATURE_POISON)
#define UFFD_API_IOCTLS \
((__u64)1 << _UFFDIO_REGISTER | \
(__u64)1 << _UFFDIO_UNREGISTER | \
@@ -49,12 +50,14 @@
(__u64)1 << _UFFDIO_COPY | \
(__u64)1 << _UFFDIO_ZEROPAGE | \
(__u64)1 << _UFFDIO_WRITEPROTECT | \
- (__u64)1 << _UFFDIO_CONTINUE)
+ (__u64)1 << _UFFDIO_CONTINUE | \
+ (__u64)1 << _UFFDIO_POISON)
#define UFFD_API_RANGE_IOCTLS_BASIC \
((__u64)1 << _UFFDIO_WAKE | \
(__u64)1 << _UFFDIO_COPY | \
+ (__u64)1 << _UFFDIO_WRITEPROTECT | \
(__u64)1 << _UFFDIO_CONTINUE | \
- (__u64)1 << _UFFDIO_WRITEPROTECT)
+ (__u64)1 << _UFFDIO_POISON)
/*
* Valid ioctl command number range with this API is from 0x00 to
@@ -71,6 +74,7 @@
#define _UFFDIO_ZEROPAGE (0x04)
#define _UFFDIO_WRITEPROTECT (0x06)
#define _UFFDIO_CONTINUE (0x07)
+#define _UFFDIO_POISON (0x08)
#define _UFFDIO_API (0x3F)
/* userfaultfd ioctl ids */
@@ -91,6 +95,8 @@
struct uffdio_writeprotect)
#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, \
struct uffdio_continue)
+#define UFFDIO_POISON _IOWR(UFFDIO, _UFFDIO_POISON, \
+ struct uffdio_poison)
/* read() structure */
struct uffd_msg {
@@ -225,6 +231,7 @@ struct uffdio_api {
#define UFFD_FEATURE_EXACT_ADDRESS (1<<11)
#define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1<<12)
#define UFFD_FEATURE_WP_UNPOPULATED (1<<13)
+#define UFFD_FEATURE_POISON (1<<14)
__u64 features;
__u64 ioctls;
@@ -321,6 +328,18 @@ struct uffdio_continue {
__s64 mapped;
};
+struct uffdio_poison {
+ struct uffdio_range range;
+#define UFFDIO_POISON_MODE_DONTWAKE ((__u64)1<<0)
+ __u64 mode;
+
+ /*
+ * Fields below here are written by the ioctl and must be at the end:
+ * the copy_from_user will not read past here.
+ */
+ __s64 updated;
+};
+
/*
* Flags for the userfaultfd(2) system call itself.
*/
diff --git a/contrib/libs/linux-headers/linux/v4l2-subdev.h b/contrib/libs/linux-headers/linux/v4l2-subdev.h
index 4a195b68f2..b383c2fe0c 100644
--- a/contrib/libs/linux-headers/linux/v4l2-subdev.h
+++ b/contrib/libs/linux-headers/linux/v4l2-subdev.h
@@ -239,7 +239,7 @@ struct v4l2_subdev_routing {
* set (which is the default), the 'stream' fields will be forced to 0 by the
* kernel.
*/
- #define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1U << 0)
+ #define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1ULL << 0)
/**
* struct v4l2_subdev_client_capability - Capabilities of the client accessing
diff --git a/contrib/libs/linux-headers/linux/version.h b/contrib/libs/linux-headers/linux/version.h
index 23253fbb7c..d4fc15cdd3 100644
--- a/contrib/libs/linux-headers/linux/version.h
+++ b/contrib/libs/linux-headers/linux/version.h
@@ -1,5 +1,5 @@
-#define LINUX_VERSION_CODE 394505
+#define LINUX_VERSION_CODE 394759
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
#define LINUX_VERSION_MAJOR 6
-#define LINUX_VERSION_PATCHLEVEL 5
-#define LINUX_VERSION_SUBLEVEL 9
+#define LINUX_VERSION_PATCHLEVEL 6
+#define LINUX_VERSION_SUBLEVEL 7
diff --git a/contrib/libs/linux-headers/linux/vfio.h b/contrib/libs/linux-headers/linux/vfio.h
index 16db89071e..acf72b4999 100644
--- a/contrib/libs/linux-headers/linux/vfio.h
+++ b/contrib/libs/linux-headers/linux/vfio.h
@@ -217,6 +217,7 @@ struct vfio_device_info {
__u32 num_regions; /* Max region index + 1 */
__u32 num_irqs; /* Max IRQ index + 1 */
__u32 cap_offset; /* Offset within info struct of first cap */
+ __u32 pad;
};
#define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7)
@@ -677,11 +678,60 @@ enum {
* VFIO_DEVICE_GET_PCI_HOT_RESET_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 12,
* struct vfio_pci_hot_reset_info)
*
+ * This command is used to query the affected devices in the hot reset for
+ * a given device.
+ *
+ * This command always reports the segment, bus, and devfn information for
+ * each affected device, and selectively reports the group_id or devid per
+ * the way how the calling device is opened.
+ *
+ * - If the calling device is opened via the traditional group/container
+ * API, group_id is reported. User should check if it has owned all
+ * the affected devices and provides a set of group fds to prove the
+ * ownership in VFIO_DEVICE_PCI_HOT_RESET ioctl.
+ *
+ * - If the calling device is opened as a cdev, devid is reported.
+ * Flag VFIO_PCI_HOT_RESET_FLAG_DEV_ID is set to indicate this
+ * data type. All the affected devices should be represented in
+ * the dev_set, ex. bound to a vfio driver, and also be owned by
+ * this interface which is determined by the following conditions:
+ * 1) Has a valid devid within the iommufd_ctx of the calling device.
+ * Ownership cannot be determined across separate iommufd_ctx and
+ * the cdev calling conventions do not support a proof-of-ownership
+ * model as provided in the legacy group interface. In this case
+ * valid devid with value greater than zero is provided in the return
+ * structure.
+ * 2) Does not have a valid devid within the iommufd_ctx of the calling
+ * device, but belongs to the same IOMMU group as the calling device
+ * or another opened device that has a valid devid within the
+ * iommufd_ctx of the calling device. This provides implicit ownership
+ * for devices within the same DMA isolation context. In this case
+ * the devid value of VFIO_PCI_DEVID_OWNED is provided in the return
+ * structure.
+ *
+ * A devid value of VFIO_PCI_DEVID_NOT_OWNED is provided in the return
+ * structure for affected devices where device is NOT represented in the
+ * dev_set or ownership is not available. Such devices prevent the use
+ * of VFIO_DEVICE_PCI_HOT_RESET ioctl outside of the proof-of-ownership
+ * calling conventions (ie. via legacy group accessed devices). Flag
+ * VFIO_PCI_HOT_RESET_FLAG_DEV_ID_OWNED would be set when all the
+ * affected devices are represented in the dev_set and also owned by
+ * the user. This flag is available only when
+ * flag VFIO_PCI_HOT_RESET_FLAG_DEV_ID is set, otherwise reserved.
+ * When set, user could invoke VFIO_DEVICE_PCI_HOT_RESET with a zero
+ * length fd array on the calling device as the ownership is validated
+ * by iommufd_ctx.
+ *
* Return: 0 on success, -errno on failure:
* -enospc = insufficient buffer, -enodev = unsupported for device.
*/
struct vfio_pci_dependent_device {
- __u32 group_id;
+ union {
+ __u32 group_id;
+ __u32 devid;
+#define VFIO_PCI_DEVID_OWNED 0
+#define VFIO_PCI_DEVID_NOT_OWNED -1
+ };
__u16 segment;
__u8 bus;
__u8 devfn; /* Use PCI_SLOT/PCI_FUNC */
@@ -690,6 +740,8 @@ struct vfio_pci_dependent_device {
struct vfio_pci_hot_reset_info {
__u32 argsz;
__u32 flags;
+#define VFIO_PCI_HOT_RESET_FLAG_DEV_ID (1 << 0)
+#define VFIO_PCI_HOT_RESET_FLAG_DEV_ID_OWNED (1 << 1)
__u32 count;
struct vfio_pci_dependent_device devices[];
};
@@ -700,6 +752,24 @@ struct vfio_pci_hot_reset_info {
* VFIO_DEVICE_PCI_HOT_RESET - _IOW(VFIO_TYPE, VFIO_BASE + 13,
* struct vfio_pci_hot_reset)
*
+ * A PCI hot reset results in either a bus or slot reset which may affect
+ * other devices sharing the bus/slot. The calling user must have
+ * ownership of the full set of affected devices as determined by the
+ * VFIO_DEVICE_GET_PCI_HOT_RESET_INFO ioctl.
+ *
+ * When called on a device file descriptor acquired through the vfio
+ * group interface, the user is required to provide proof of ownership
+ * of those affected devices via the group_fds array in struct
+ * vfio_pci_hot_reset.
+ *
+ * When called on a direct cdev opened vfio device, the flags field of
+ * struct vfio_pci_hot_reset_info reports the ownership status of the
+ * affected devices and this ioctl must be called with an empty group_fds
+ * array. See above INFO ioctl definition for ownership requirements.
+ *
+ * Mixed usage of legacy groups and cdevs across the set of affected
+ * devices is not supported.
+ *
* Return: 0 on success, -errno on failure.
*/
struct vfio_pci_hot_reset {
@@ -829,6 +899,83 @@ struct vfio_device_feature {
#define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
/*
+ * VFIO_DEVICE_BIND_IOMMUFD - _IOR(VFIO_TYPE, VFIO_BASE + 18,
+ * struct vfio_device_bind_iommufd)
+ * @argsz: User filled size of this data.
+ * @flags: Must be 0.
+ * @iommufd: iommufd to bind.
+ * @out_devid: The device id generated by this bind. devid is a handle for
+ * this device/iommufd bond and can be used in IOMMUFD commands.
+ *
+ * Bind a vfio_device to the specified iommufd.
+ *
+ * User is restricted from accessing the device before the binding operation
+ * is completed. Only allowed on cdev fds.
+ *
+ * Unbind is automatically conducted when device fd is closed.
+ *
+ * Return: 0 on success, -errno on failure.
+ */
+struct vfio_device_bind_iommufd {
+ __u32 argsz;
+ __u32 flags;
+ __s32 iommufd;
+ __u32 out_devid;
+};
+
+#define VFIO_DEVICE_BIND_IOMMUFD _IO(VFIO_TYPE, VFIO_BASE + 18)
+
+/*
+ * VFIO_DEVICE_ATTACH_IOMMUFD_PT - _IOW(VFIO_TYPE, VFIO_BASE + 19,
+ * struct vfio_device_attach_iommufd_pt)
+ * @argsz: User filled size of this data.
+ * @flags: Must be 0.
+ * @pt_id: Input the target id which can represent an ioas or a hwpt
+ * allocated via iommufd subsystem.
+ * Output the input ioas id or the attached hwpt id which could
+ * be the specified hwpt itself or a hwpt automatically created
+ * for the specified ioas by kernel during the attachment.
+ *
+ * Associate the device with an address space within the bound iommufd.
+ * Undo by VFIO_DEVICE_DETACH_IOMMUFD_PT or device fd close. This is only
+ * allowed on cdev fds.
+ *
+ * If a vfio device is currently attached to a valid hw_pagetable, without doing
+ * a VFIO_DEVICE_DETACH_IOMMUFD_PT, a second VFIO_DEVICE_ATTACH_IOMMUFD_PT ioctl
+ * passing in another hw_pagetable (hwpt) id is allowed. This action, also known
+ * as a hw_pagetable replacement, will replace the device's currently attached
+ * hw_pagetable with a new hw_pagetable corresponding to the given pt_id.
+ *
+ * Return: 0 on success, -errno on failure.
+ */
+struct vfio_device_attach_iommufd_pt {
+ __u32 argsz;
+ __u32 flags;
+ __u32 pt_id;
+};
+
+#define VFIO_DEVICE_ATTACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 19)
+
+/*
+ * VFIO_DEVICE_DETACH_IOMMUFD_PT - _IOW(VFIO_TYPE, VFIO_BASE + 20,
+ * struct vfio_device_detach_iommufd_pt)
+ * @argsz: User filled size of this data.
+ * @flags: Must be 0.
+ *
+ * Remove the association of the device and its current associated address
+ * space. After it, the device should be in a blocking DMA state. This is only
+ * allowed on cdev fds.
+ *
+ * Return: 0 on success, -errno on failure.
+ */
+struct vfio_device_detach_iommufd_pt {
+ __u32 argsz;
+ __u32 flags;
+};
+
+#define VFIO_DEVICE_DETACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 20)
+
+/*
* Provide support for setting a PCI VF Token, which is used as a shared
* secret between PF and VF drivers. This feature may only be set on a
* PCI SR-IOV PF when SR-IOV is enabled on the PF and there are no existing
@@ -1304,6 +1451,7 @@ struct vfio_iommu_type1_info {
#define VFIO_IOMMU_INFO_CAPS (1 << 1) /* Info supports caps */
__u64 iova_pgsizes; /* Bitmap of supported page sizes */
__u32 cap_offset; /* Offset within info struct of first cap */
+ __u32 pad;
};
/*
diff --git a/contrib/libs/linux-headers/linux/vhost_types.h b/contrib/libs/linux-headers/linux/vhost_types.h
index 157db48379..637ab7e1bd 100644
--- a/contrib/libs/linux-headers/linux/vhost_types.h
+++ b/contrib/libs/linux-headers/linux/vhost_types.h
@@ -181,5 +181,9 @@ struct vhost_vdpa_iova_range {
#define VHOST_BACKEND_F_SUSPEND 0x4
/* Device can be resumed */
#define VHOST_BACKEND_F_RESUME 0x5
+/* Device supports the driver enabling virtqueues both before and after
+ * DRIVER_OK
+ */
+#define VHOST_BACKEND_F_ENABLE_AFTER_DRIVER_OK 0x6
#endif
diff --git a/contrib/libs/linux-headers/linux/videodev2.h b/contrib/libs/linux-headers/linux/videodev2.h
index d4044ea9d7..47dbd68d43 100644
--- a/contrib/libs/linux-headers/linux/videodev2.h
+++ b/contrib/libs/linux-headers/linux/videodev2.h
@@ -769,6 +769,8 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */
#define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */
#define V4L2_PIX_FMT_MM21 v4l2_fourcc('M', 'M', '2', '1') /* Mediatek 8-bit block mode, two non-contiguous planes */
+#define V4L2_PIX_FMT_MT2110T v4l2_fourcc('M', 'T', '2', 'T') /* Mediatek 10-bit block tile mode */
+#define V4L2_PIX_FMT_MT2110R v4l2_fourcc('M', 'T', '2', 'R') /* Mediatek 10-bit block raster mode */
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
diff --git a/contrib/libs/linux-headers/linux/virtio_net.h b/contrib/libs/linux-headers/linux/virtio_net.h
index 8b9bc4fdc1..5775077dc6 100644
--- a/contrib/libs/linux-headers/linux/virtio_net.h
+++ b/contrib/libs/linux-headers/linux/virtio_net.h
@@ -56,6 +56,7 @@
#define VIRTIO_NET_F_MQ 22 /* Device supports Receive Flow
* Steering */
#define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */
+#define VIRTIO_NET_F_VQ_NOTF_COAL 52 /* Device supports virtqueue notification coalescing */
#define VIRTIO_NET_F_NOTF_COAL 53 /* Device supports notifications coalescing */
#define VIRTIO_NET_F_GUEST_USO4 54 /* Guest can handle USOv4 in. */
#define VIRTIO_NET_F_GUEST_USO6 55 /* Guest can handle USOv6 in. */
@@ -391,5 +392,18 @@ struct virtio_net_ctrl_coal_rx {
};
#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
+#define VIRTIO_NET_CTRL_NOTF_COAL_VQ_SET 2
+#define VIRTIO_NET_CTRL_NOTF_COAL_VQ_GET 3
+
+struct virtio_net_ctrl_coal {
+ __le32 max_packets;
+ __le32 max_usecs;
+};
+
+struct virtio_net_ctrl_coal_vq {
+ __le16 vqn;
+ __le16 reserved;
+ struct virtio_net_ctrl_coal coal;
+};
#endif /* _LINUX_VIRTIO_NET_H */
diff --git a/contrib/libs/linux-headers/linux/vm_sockets.h b/contrib/libs/linux-headers/linux/vm_sockets.h
index 3692d4391e..aa3ec6516c 100644
--- a/contrib/libs/linux-headers/linux/vm_sockets.h
+++ b/contrib/libs/linux-headers/linux/vm_sockets.h
@@ -189,4 +189,21 @@ struct sockaddr_vm {
#define IOCTL_VM_SOCKETS_GET_LOCAL_CID _IO(7, 0xb9)
+/* MSG_ZEROCOPY notifications are encoded in the standard error format,
+ * sock_extended_err. See Documentation/networking/msg_zerocopy.rst in
+ * kernel source tree for more details.
+ */
+
+/* 'cmsg_level' field value of 'struct cmsghdr' for notification parsing
+ * when MSG_ZEROCOPY flag is used on transmissions.
+ */
+
+#define SOL_VSOCK 287
+
+/* 'cmsg_type' field value of 'struct cmsghdr' for notification parsing
+ * when MSG_ZEROCOPY flag is used on transmissions.
+ */
+
+#define VSOCK_RECVERR 1
+
#endif /* _VM_SOCKETS_H */
diff --git a/contrib/libs/linux-headers/rdma/bnxt_re-abi.h b/contrib/libs/linux-headers/rdma/bnxt_re-abi.h
index 8a2a1d4f6b..6e7c67a0cc 100644
--- a/contrib/libs/linux-headers/rdma/bnxt_re-abi.h
+++ b/contrib/libs/linux-headers/rdma/bnxt_re-abi.h
@@ -53,6 +53,7 @@ enum {
BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL,
BNXT_RE_UCNTX_CMASK_HAVE_MODE = 0x02ULL,
BNXT_RE_UCNTX_CMASK_WC_DPI_ENABLED = 0x04ULL,
+ BNXT_RE_UCNTX_CMASK_DBR_PACING_ENABLED = 0x08ULL,
};
enum bnxt_re_wqe_mode {
@@ -131,10 +132,13 @@ enum bnxt_re_shpg_offt {
enum bnxt_re_objects {
BNXT_RE_OBJECT_ALLOC_PAGE = (1U << UVERBS_ID_NS_SHIFT),
+ BNXT_RE_OBJECT_NOTIFY_DRV,
};
enum bnxt_re_alloc_page_type {
BNXT_RE_ALLOC_WC_PAGE = 0,
+ BNXT_RE_ALLOC_DBR_BAR_PAGE,
+ BNXT_RE_ALLOC_DBR_PAGE,
};
enum bnxt_re_var_alloc_page_attrs {
@@ -154,4 +158,7 @@ enum bnxt_re_alloc_page_methods {
BNXT_RE_METHOD_DESTROY_PAGE,
};
+enum bnxt_re_notify_drv_methods {
+ BNXT_RE_METHOD_NOTIFY_DRV = (1U << UVERBS_ID_NS_SHIFT),
+};
#endif /* __BNXT_RE_UVERBS_ABI_H__*/
diff --git a/contrib/libs/linux-headers/rdma/irdma-abi.h b/contrib/libs/linux-headers/rdma/irdma-abi.h
index a7085e092d..bb18f15489 100644
--- a/contrib/libs/linux-headers/rdma/irdma-abi.h
+++ b/contrib/libs/linux-headers/rdma/irdma-abi.h
@@ -22,10 +22,16 @@ enum irdma_memreg_type {
IRDMA_MEMREG_TYPE_CQ = 2,
};
+enum {
+ IRDMA_ALLOC_UCTX_USE_RAW_ATTR = 1 << 0,
+ IRDMA_ALLOC_UCTX_MIN_HW_WQ_SIZE = 1 << 1,
+};
+
struct irdma_alloc_ucontext_req {
__u32 rsvd32;
__u8 userspace_ver;
__u8 rsvd8[3];
+ __aligned_u64 comp_mask;
};
struct irdma_alloc_ucontext_resp {
@@ -46,6 +52,9 @@ struct irdma_alloc_ucontext_resp {
__u16 max_hw_sq_chunk;
__u8 hw_rev;
__u8 rsvd2;
+ __aligned_u64 comp_mask;
+ __u16 min_hw_wq_size;
+ __u8 rsvd3[6];
};
struct irdma_alloc_pd_resp {
diff --git a/contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h b/contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h
index fd3f9e5ee2..03f2beadf2 100644
--- a/contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h
+++ b/contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h
@@ -8,6 +8,7 @@
#ifndef SCSI_BSG_UFS_H
#define SCSI_BSG_UFS_H
+#include <asm/byteorder.h>
#include <linux/types.h>
/*
* This file intended to be included by both kernel and user space
@@ -40,11 +41,56 @@ enum ufs_rpmb_op_type {
* @dword_0: UPIU header DW-0
* @dword_1: UPIU header DW-1
* @dword_2: UPIU header DW-2
+ *
+ * @transaction_code: Type of request or response. See also enum
+ * upiu_request_transaction and enum upiu_response_transaction.
+ * @flags: UPIU flags. The meaning of individual flags depends on the
+ * transaction code.
+ * @lun: Logical unit number.
+ * @task_tag: Task tag.
+ * @iid: Initiator ID.
+ * @command_set_type: 0 for SCSI command set; 1 for UFS specific.
+ * @tm_function: Task management function in case of a task management request
+ * UPIU.
+ * @query_function: Query function in case of a query request UPIU.
+ * @response: 0 for success; 1 for failure.
+ * @status: SCSI status if this is the header of a response to a SCSI command.
+ * @ehs_length: EHS length in units of 32 bytes.
+ * @device_information:
+ * @data_segment_length: data segment length.
*/
struct utp_upiu_header {
- __be32 dword_0;
- __be32 dword_1;
- __be32 dword_2;
+ union {
+ struct {
+ __be32 dword_0;
+ __be32 dword_1;
+ __be32 dword_2;
+ };
+ struct {
+ __u8 transaction_code;
+ __u8 flags;
+ __u8 lun;
+ __u8 task_tag;
+#if defined(__BIG_ENDIAN)
+ __u8 iid: 4;
+ __u8 command_set_type: 4;
+#elif defined(__LITTLE_ENDIAN)
+ __u8 command_set_type: 4;
+ __u8 iid: 4;
+#else
+#error
+#endif
+ union {
+ __u8 tm_function;
+ __u8 query_function;
+ } __attribute__((packed));
+ __u8 response;
+ __u8 status;
+ __u8 ehs_length;
+ __u8 device_information;
+ __be16 data_segment_length;
+ };
+ };
};
/**
diff --git a/contrib/libs/linux-headers/sound/sof/tokens.h b/contrib/libs/linux-headers/sound/sof/tokens.h
index e9ec7e4eb9..453cab2a12 100644
--- a/contrib/libs/linux-headers/sound/sof/tokens.h
+++ b/contrib/libs/linux-headers/sound/sof/tokens.h
@@ -99,7 +99,11 @@
#define SOF_TKN_COMP_OUTPUT_PIN_BINDING_WNAME 414
#define SOF_TKN_COMP_NUM_INPUT_AUDIO_FORMATS 415
#define SOF_TKN_COMP_NUM_OUTPUT_AUDIO_FORMATS 416
-
+/*
+ * The token value is copied to the dapm_widget's
+ * no_wname_in_kcontrol_name.
+ */
+#define SOF_TKN_COMP_NO_WNAME_IN_KCONTROL_NAME 417
/* SSP */
#define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
diff --git a/contrib/libs/linux-headers/xen/privcmd.h b/contrib/libs/linux-headers/xen/privcmd.h
index b1024f1d56..3dfa732b3c 100644
--- a/contrib/libs/linux-headers/xen/privcmd.h
+++ b/contrib/libs/linux-headers/xen/privcmd.h
@@ -98,6 +98,18 @@ struct privcmd_mmap_resource {
__u64 addr;
};
+/* For privcmd_irqfd::flags */
+#define PRIVCMD_IRQFD_FLAG_DEASSIGN (1 << 0)
+
+struct privcmd_irqfd {
+ __u64 dm_op;
+ __u32 size; /* Size of structure pointed by dm_op */
+ __u32 fd;
+ __u32 flags;
+ domid_t dom;
+ __u8 pad[2];
+};
+
/*
* @cmd: IOCTL_PRIVCMD_HYPERCALL
* @arg: &privcmd_hypercall_t
@@ -125,5 +137,7 @@ struct privcmd_mmap_resource {
_IOC(_IOC_NONE, 'P', 6, sizeof(domid_t))
#define IOCTL_PRIVCMD_MMAP_RESOURCE \
_IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource))
+#define IOCTL_PRIVCMD_IRQFD \
+ _IOW('P', 8, struct privcmd_irqfd)
#endif /* __LINUX_PUBLIC_PRIVCMD_H__ */
diff --git a/contrib/libs/linux-headers/ya.make b/contrib/libs/linux-headers/ya.make
index 8d06604701..fe35a884e0 100644
--- a/contrib/libs/linux-headers/ya.make
+++ b/contrib/libs/linux-headers/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
@@ -26,9 +26,9 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-VERSION(6.5.9)
+VERSION(6.6.7)
-ORIGINAL_SOURCE(mirror://kernel/linux/kernel/v6.x/linux-6.5.9.tar.xz)
+ORIGINAL_SOURCE(mirror://kernel/linux/kernel/v6.x/linux-6.6.7.tar.xz)
IF (OPENSOURCE_REPLACE_LINUX_HEADERS AND EXPORT_CMAKE)
OPENSOURCE_EXPORT_REPLACEMENT_BY_OS(
diff --git a/contrib/libs/openssl/ar.pyplugin b/contrib/libs/openssl/ar.pyplugin
new file mode 100644
index 0000000000..29d7e55c30
--- /dev/null
+++ b/contrib/libs/openssl/ar.pyplugin
@@ -0,0 +1,73 @@
+#!/usr/bin/env python3
+
+from __future__ import print_function
+
+import os
+import sys
+import subprocess
+
+
+def run(*args):
+ return subprocess.check_output(list(args), shell=False).strip()
+
+
+def gen_renames_1(d):
+ for l in d.split('\n'):
+ l = l.strip()
+
+ if ' ' in l:
+ yield l.split(' ')[-1]
+
+
+def have_prefix(l, p):
+ for x in l:
+ if not x.startswith(p):
+ return False
+
+ return True
+
+
+def gen_renames_2(p, d):
+ l = list(gen_renames_1(d))
+ a = have_prefix(l, '_')
+
+ for s in l:
+ if 'asan_globals' in s:
+ continue
+
+ if s in ['HMAC', 'SHA1', 'SHA256', 'SHA256', 'SHA512', 'RC4', 'MD5', 'SHA384']:
+ continue
+
+ if a and s[1:] in ['HMAC', 'SHA1', 'SHA256', 'SHA256', 'SHA512', 'RC4', 'MD5', 'SHA384']:
+ continue
+
+ if a:
+ yield s + ' _' + p + s[1:]
+ else:
+ yield s + ' ' + p + s
+
+
+def gen_renames(p, d):
+ return '\n'.join(gen_renames_2(p, d)).strip() + '\n'
+
+
+def rename_syms(where, ret):
+ p = 'v1_'
+
+ # find symbols to rename
+ syms = run(where + 'llvm-nm', '--extern-only', '--defined-only', '-A', ret)
+
+ # prepare rename plan
+ renames = gen_renames(p, syms)
+ tmp = ret + '.syms'
+
+ with open(tmp, 'w') as f:
+ f.write(renames)
+
+ # rename symbols
+ run(where + 'llvm-objcopy', '--redefine-syms=' + tmp, ret)
+ os.unlink(tmp)
+
+
+if __name__ == '__main__':
+ rename_syms(os.path.dirname(sys.argv[3]) + '/', sys.argv[1])
diff --git a/contrib/libs/openssl/redef.h b/contrib/libs/openssl/redef.h
index 2044bcacf0..259b2124fd 100644
--- a/contrib/libs/openssl/redef.h
+++ b/contrib/libs/openssl/redef.h
@@ -1,6 +1,6 @@
#pragma once
-#if !defined(OPENSSL_BUILD) && !defined(_MSC_VER) && !defined(OPENSSL_DONT_ADD_VERSION_PREFIX)
+#if !defined(OPENSSL_BUILD) && defined(OPENSSL_RENAME_SYMBOLS)
#define a2d_ASN1_OBJECT v1_a2d_ASN1_OBJECT
#define a2i_ASN1_ENUMERATED v1_a2i_ASN1_ENUMERATED
#define a2i_ASN1_INTEGER v1_a2i_ASN1_INTEGER
diff --git a/contrib/libs/openssl/ya.make b/contrib/libs/openssl/ya.make
index 7d8ecf86fb..70c95e4732 100644
--- a/contrib/libs/openssl/ya.make
+++ b/contrib/libs/openssl/ya.make
@@ -48,12 +48,11 @@ ADDINCL(
CFLAGS(-DOPENSSL_BUILD=1)
-IF (EXPORT_CMAKE)
- CFLAGS(GLOBAL -DOPENSSL_DONT_ADD_VERSION_PREFIX)
-ENDIF()
-
-IF (MAPSMOBI_BUILD_TARGET)
- CFLAGS(GLOBAL -DOPENSSL_DONT_ADD_VERSION_PREFIX)
+IF (EXPORT_CMAKE OR OS_WINDOWS OR MAPSMOBI_BUILD_TARGET)
+ # DO NOT RENAME
+ELSE()
+ AR_PLUGIN(ar)
+ CFLAGS(GLOBAL -DOPENSSL_RENAME_SYMBOLS=1)
ENDIF()
IF (NOT EXPORT_CMAKE OR NOT OPENSOURCE_REPLACE_OPENSSL)
diff --git a/contrib/libs/simdjson/.yandex_meta/devtools.licenses.report b/contrib/libs/simdjson/.yandex_meta/devtools.licenses.report
index 5ddc509f18..2aad6abcfa 100644
--- a/contrib/libs/simdjson/.yandex_meta/devtools.licenses.report
+++ b/contrib/libs/simdjson/.yandex_meta/devtools.licenses.report
@@ -42,7 +42,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
Files with this license:
- README.md [233:233]
+ README.md [235:235]
KEEP MIT 0a00f0d66f4f37595306dd8c6a25c63c
BELONGS ya.make
@@ -54,7 +54,7 @@ BELONGS ya.make
Match type : NOTICE
Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
Files with this license:
- README.md [229:229]
+ README.md [231:231]
SKIP LicenseRef-scancode-unknown-license-reference 0d48e0b09865a98a90db20ea37b36bb8
BELONGS ya.make
@@ -66,7 +66,7 @@ BELONGS ya.make
Match type : INTRO
Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
Files with this license:
- README.md [237:237]
+ README.md [239:239]
KEEP Apache-2.0 13ec3cccf3036f38df47d2051a825972
BELONGS ya.make
@@ -102,7 +102,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
Files with this license:
- README.md [213:213]
+ README.md [215:215]
SKIP BSL-1.0 2a9212d785cde4078c2f6803e544de21
BELONGS ya.make
@@ -113,7 +113,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
Files with this license:
- README.md [233:233]
+ README.md [235:235]
KEEP MIT 3e1ede6948a97e7ee3d75e0204a567f3
BELONGS ya.make
@@ -125,7 +125,7 @@ BELONGS ya.make
Match type : TAG
Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
Files with this license:
- README.md [217:217]
+ README.md [219:219]
SKIP Apache-2.0 500a503129337bb5adf5977ce11879cd
BELONGS ya.make
@@ -137,7 +137,7 @@ BELONGS ya.make
Match type : NOTICE
Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
Files with this license:
- README.md [229:229]
+ README.md [231:231]
SKIP BSL-1.0 77dd56e30840a227692d435b4aecdb95
BELONGS ya.make
@@ -148,11 +148,11 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
Files with this license:
- README.md [233:233]
+ README.md [235:235]
KEEP MIT 7f0bdbc0a0545831259b66259ac6b604
BELONGS ya.make
-FILE_INCLUDE LICENSE-MIT found in files: README.md at line 216
+FILE_INCLUDE LICENSE-MIT found in files: README.md at line 218
License text:
[licensemit]: LICENSE-MIT
Scancode info:
@@ -161,7 +161,7 @@ FILE_INCLUDE LICENSE-MIT found in files: README.md at line 216
Match type : TAG
Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
Files with this license:
- README.md [216:216]
+ README.md [218:218]
KEEP Apache-2.0 82e76bbc1841bd5886297e795c72bfa5
BELONGS ya.make
@@ -173,7 +173,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
Files with this license:
- README.md [229:229]
+ README.md [231:231]
KEEP MIT a6e9f2d79eb73e6e422759b53da6152a
BELONGS ya.make
@@ -208,7 +208,7 @@ BELONGS ya.make
Match type : NOTICE
Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
Files with this license:
- README.md [235:235]
+ README.md [237:237]
SKIP Apache-2.0 c23a044f4165feb9568f486ca3b30fc8
BELONGS ya.make
@@ -219,7 +219,7 @@ BELONGS ya.make
Match type : NOTICE
Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
Files with this license:
- README.md [233:233]
+ README.md [235:235]
SKIP BSD-3-Clause d77bd60dc7ee5f9c3b221f6edd94bbac
BELONGS ya.make
@@ -231,7 +231,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
Files with this license:
- README.md [237:237]
+ README.md [239:239]
SKIP MIT dd09705e3ec59af63c705c8f5f3eadb2
BELONGS ya.make
@@ -243,7 +243,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
Files with this license:
- README.md [231:231]
+ README.md [233:233]
KEEP MIT f0fe4686586f118327c3bc63fe4027de
BELONGS ya.make
diff --git a/contrib/libs/simdjson/.yandex_meta/override.nix b/contrib/libs/simdjson/.yandex_meta/override.nix
index 3dc9e380ec..386e6cc798 100644
--- a/contrib/libs/simdjson/.yandex_meta/override.nix
+++ b/contrib/libs/simdjson/.yandex_meta/override.nix
@@ -1,11 +1,11 @@
pkgs: attrs: with pkgs; rec {
- version = "3.12.0";
+ version = "3.12.1";
src = fetchFromGitHub {
owner = "simdjson";
repo = "simdjson";
rev = "v${version}";
- hash = "sha256-F5yqhDBDoWgB4YkFOYUFEczdu24aBdbsTly4LcFZqDQ=";
+ hash = "sha256-ujeG3yidZJZV6x4RQQYXwbslQcRx3HaqjzgaU2A4cQU=";
};
cmakeFlags = attrs.cmakeFlags ++ [
diff --git a/contrib/libs/simdjson/README.md b/contrib/libs/simdjson/README.md
index a0c4a109c9..d0cae0caa4 100644
--- a/contrib/libs/simdjson/README.md
+++ b/contrib/libs/simdjson/README.md
@@ -63,6 +63,8 @@ Real-world usage
- [ada-url](https://github.com/ada-url/ada)
- [fastgron](https://github.com/adamritter/fastgron)
- [WasmEdge](https://wasmedge.org)
+- [RonDB](https://github.com/logicalclocks/rondb)
+
If you are planning to use simdjson in a product, please work from one of our releases.
diff --git a/contrib/libs/simdjson/include/simdjson/simdjson_version.h b/contrib/libs/simdjson/include/simdjson/simdjson_version.h
index dd6bfbe073..ae27901639 100644
--- a/contrib/libs/simdjson/include/simdjson/simdjson_version.h
+++ b/contrib/libs/simdjson/include/simdjson/simdjson_version.h
@@ -4,7 +4,7 @@
#define SIMDJSON_SIMDJSON_VERSION_H
/** The version of simdjson being used (major.minor.revision) */
-#define SIMDJSON_VERSION "3.12.0"
+#define SIMDJSON_VERSION "3.12.1"
namespace simdjson {
enum {
@@ -19,7 +19,7 @@ enum {
/**
* The revision (major.minor.REVISION) of simdjson being used.
*/
- SIMDJSON_VERSION_REVISION = 0
+ SIMDJSON_VERSION_REVISION = 1
};
} // namespace simdjson
diff --git a/contrib/libs/simdjson/ya.make b/contrib/libs/simdjson/ya.make
index d774b26cfb..b4c95dae92 100644
--- a/contrib/libs/simdjson/ya.make
+++ b/contrib/libs/simdjson/ya.make
@@ -10,9 +10,9 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-VERSION(3.12.0)
+VERSION(3.12.1)
-ORIGINAL_SOURCE(https://github.com/simdjson/simdjson/archive/v3.12.0.tar.gz)
+ORIGINAL_SOURCE(https://github.com/simdjson/simdjson/archive/v3.12.1.tar.gz)
ADDINCL(
GLOBAL contrib/libs/simdjson/include
diff --git a/contrib/restricted/boost/algorithm/ya.make b/contrib/restricted/boost/algorithm/ya.make
index d938d03b88..0ed2855a8e 100644
--- a/contrib/restricted/boost/algorithm/ya.make
+++ b/contrib/restricted/boost/algorithm/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/align/ya.make b/contrib/restricted/boost/align/ya.make
index 9c31c8be12..da48278a2a 100644
--- a/contrib/restricted/boost/align/ya.make
+++ b/contrib/restricted/boost/align/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/any/ya.make b/contrib/restricted/boost/any/ya.make
index af2ca98549..82f0107ef4 100644
--- a/contrib/restricted/boost/any/ya.make
+++ b/contrib/restricted/boost/any/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/array/ya.make b/contrib/restricted/boost/array/ya.make
index 88d2e9a1f6..36c56a138b 100644
--- a/contrib/restricted/boost/array/ya.make
+++ b/contrib/restricted/boost/array/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/asio/ya.make b/contrib/restricted/boost/asio/ya.make
index f5f8e8c766..8999bcbf41 100644
--- a/contrib/restricted/boost/asio/ya.make
+++ b/contrib/restricted/boost/asio/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/assert/ya.make b/contrib/restricted/boost/assert/ya.make
index 00e873ef77..2ce68b77e5 100644
--- a/contrib/restricted/boost/assert/ya.make
+++ b/contrib/restricted/boost/assert/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/atomic/ya.make b/contrib/restricted/boost/atomic/ya.make
index 9cf20d6826..116e53a811 100644
--- a/contrib/restricted/boost/atomic/ya.make
+++ b/contrib/restricted/boost/atomic/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/bimap/ya.make b/contrib/restricted/boost/bimap/ya.make
index 267377cb61..f20f745904 100644
--- a/contrib/restricted/boost/bimap/ya.make
+++ b/contrib/restricted/boost/bimap/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/bind/ya.make b/contrib/restricted/boost/bind/ya.make
index e5f8ce459e..c5a2900630 100644
--- a/contrib/restricted/boost/bind/ya.make
+++ b/contrib/restricted/boost/bind/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/chrono/ya.make b/contrib/restricted/boost/chrono/ya.make
index a7ac5ae30e..b2067cd12a 100644
--- a/contrib/restricted/boost/chrono/ya.make
+++ b/contrib/restricted/boost/chrono/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/concept_check/ya.make b/contrib/restricted/boost/concept_check/ya.make
index 0d6bfef4a2..94e8ad8b18 100644
--- a/contrib/restricted/boost/concept_check/ya.make
+++ b/contrib/restricted/boost/concept_check/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/config/ya.make b/contrib/restricted/boost/config/ya.make
index 775599d7d0..e120bacd8d 100644
--- a/contrib/restricted/boost/config/ya.make
+++ b/contrib/restricted/boost/config/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/container/ya.make b/contrib/restricted/boost/container/ya.make
index ea45272059..e03654a405 100644
--- a/contrib/restricted/boost/container/ya.make
+++ b/contrib/restricted/boost/container/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/container_hash/ya.make b/contrib/restricted/boost/container_hash/ya.make
index 999e5fa26f..e36c0a5f8a 100644
--- a/contrib/restricted/boost/container_hash/ya.make
+++ b/contrib/restricted/boost/container_hash/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/context/ya.make b/contrib/restricted/boost/context/ya.make
index f70cdc034c..8a147731c3 100644
--- a/contrib/restricted/boost/context/ya.make
+++ b/contrib/restricted/boost/context/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/conversion/ya.make b/contrib/restricted/boost/conversion/ya.make
index 4a0ecde166..ad542c166a 100644
--- a/contrib/restricted/boost/conversion/ya.make
+++ b/contrib/restricted/boost/conversion/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/core/ya.make b/contrib/restricted/boost/core/ya.make
index 14f29f742f..9c25aca222 100644
--- a/contrib/restricted/boost/core/ya.make
+++ b/contrib/restricted/boost/core/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/coroutine/ya.make b/contrib/restricted/boost/coroutine/ya.make
index ffe47ab248..9df407fcfb 100644
--- a/contrib/restricted/boost/coroutine/ya.make
+++ b/contrib/restricted/boost/coroutine/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/crc/ya.make b/contrib/restricted/boost/crc/ya.make
index 7c5e2a4d70..9feb7e69bf 100644
--- a/contrib/restricted/boost/crc/ya.make
+++ b/contrib/restricted/boost/crc/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/date_time/ya.make b/contrib/restricted/boost/date_time/ya.make
index 39c6b85077..37d7c50248 100644
--- a/contrib/restricted/boost/date_time/ya.make
+++ b/contrib/restricted/boost/date_time/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/describe/ya.make b/contrib/restricted/boost/describe/ya.make
index ae00966485..4fe135f389 100644
--- a/contrib/restricted/boost/describe/ya.make
+++ b/contrib/restricted/boost/describe/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/detail/ya.make b/contrib/restricted/boost/detail/ya.make
index 51e3024b64..154259f44d 100644
--- a/contrib/restricted/boost/detail/ya.make
+++ b/contrib/restricted/boost/detail/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/dynamic_bitset/ya.make b/contrib/restricted/boost/dynamic_bitset/ya.make
index 4205dbfb1e..6590530e54 100644
--- a/contrib/restricted/boost/dynamic_bitset/ya.make
+++ b/contrib/restricted/boost/dynamic_bitset/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/endian/ya.make b/contrib/restricted/boost/endian/ya.make
index 0253e965f6..a8ef1e0929 100644
--- a/contrib/restricted/boost/endian/ya.make
+++ b/contrib/restricted/boost/endian/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/exception/ya.make b/contrib/restricted/boost/exception/ya.make
index f5dd8d5a15..0a4f37eb4d 100644
--- a/contrib/restricted/boost/exception/ya.make
+++ b/contrib/restricted/boost/exception/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/filesystem/ya.make b/contrib/restricted/boost/filesystem/ya.make
index b576f8c67f..77f703684e 100644
--- a/contrib/restricted/boost/filesystem/ya.make
+++ b/contrib/restricted/boost/filesystem/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/foreach/ya.make b/contrib/restricted/boost/foreach/ya.make
index b2a7f73673..1d2a46c157 100644
--- a/contrib/restricted/boost/foreach/ya.make
+++ b/contrib/restricted/boost/foreach/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/format/ya.make b/contrib/restricted/boost/format/ya.make
index 1fa36671f8..e6a379ac2d 100644
--- a/contrib/restricted/boost/format/ya.make
+++ b/contrib/restricted/boost/format/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/function/ya.make b/contrib/restricted/boost/function/ya.make
index 6b4f5f501e..8f4408c4e6 100644
--- a/contrib/restricted/boost/function/ya.make
+++ b/contrib/restricted/boost/function/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/function_types/ya.make b/contrib/restricted/boost/function_types/ya.make
index a21355f70f..ea984dcf0a 100644
--- a/contrib/restricted/boost/function_types/ya.make
+++ b/contrib/restricted/boost/function_types/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/functional/ya.make b/contrib/restricted/boost/functional/ya.make
index fd94c7e4f8..3eafe1d62a 100644
--- a/contrib/restricted/boost/functional/ya.make
+++ b/contrib/restricted/boost/functional/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/fusion/ya.make b/contrib/restricted/boost/fusion/ya.make
index b040d1b354..76f1891d2c 100644
--- a/contrib/restricted/boost/fusion/ya.make
+++ b/contrib/restricted/boost/fusion/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/graph/ya.make b/contrib/restricted/boost/graph/ya.make
index 0d094e599f..fcf8a46af1 100644
--- a/contrib/restricted/boost/graph/ya.make
+++ b/contrib/restricted/boost/graph/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/icl/ya.make b/contrib/restricted/boost/icl/ya.make
index b35a6498aa..e3947c9cd9 100644
--- a/contrib/restricted/boost/icl/ya.make
+++ b/contrib/restricted/boost/icl/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/integer/ya.make b/contrib/restricted/boost/integer/ya.make
index 73fb20e082..d968252ea5 100644
--- a/contrib/restricted/boost/integer/ya.make
+++ b/contrib/restricted/boost/integer/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/interprocess/ya.make b/contrib/restricted/boost/interprocess/ya.make
index f80c8214e5..c358bb72df 100644
--- a/contrib/restricted/boost/interprocess/ya.make
+++ b/contrib/restricted/boost/interprocess/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/intrusive/ya.make b/contrib/restricted/boost/intrusive/ya.make
index c4277755b1..618728e554 100644
--- a/contrib/restricted/boost/intrusive/ya.make
+++ b/contrib/restricted/boost/intrusive/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/io/ya.make b/contrib/restricted/boost/io/ya.make
index c2aaf8fd2b..b3462f4776 100644
--- a/contrib/restricted/boost/io/ya.make
+++ b/contrib/restricted/boost/io/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/iostreams/ya.make b/contrib/restricted/boost/iostreams/ya.make
index 7ca9e63c2d..b16e94cb2d 100644
--- a/contrib/restricted/boost/iostreams/ya.make
+++ b/contrib/restricted/boost/iostreams/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/iterator/ya.make b/contrib/restricted/boost/iterator/ya.make
index fb90d32045..420fc86cb1 100644
--- a/contrib/restricted/boost/iterator/ya.make
+++ b/contrib/restricted/boost/iterator/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/lambda/ya.make b/contrib/restricted/boost/lambda/ya.make
index 18a1d6da60..f07eb7a44a 100644
--- a/contrib/restricted/boost/lambda/ya.make
+++ b/contrib/restricted/boost/lambda/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/lexical_cast/ya.make b/contrib/restricted/boost/lexical_cast/ya.make
index 5661727518..4f664aa61f 100644
--- a/contrib/restricted/boost/lexical_cast/ya.make
+++ b/contrib/restricted/boost/lexical_cast/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/locale/ya.make b/contrib/restricted/boost/locale/ya.make
index c219d30267..9576428064 100644
--- a/contrib/restricted/boost/locale/ya.make
+++ b/contrib/restricted/boost/locale/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/math/ya.make b/contrib/restricted/boost/math/ya.make
index 6a6432f8a5..988076c995 100644
--- a/contrib/restricted/boost/math/ya.make
+++ b/contrib/restricted/boost/math/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/move/ya.make b/contrib/restricted/boost/move/ya.make
index 5475939966..5cb906e47e 100644
--- a/contrib/restricted/boost/move/ya.make
+++ b/contrib/restricted/boost/move/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/mp11/ya.make b/contrib/restricted/boost/mp11/ya.make
index e8c641ac18..bced8c301e 100644
--- a/contrib/restricted/boost/mp11/ya.make
+++ b/contrib/restricted/boost/mp11/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/mpl/ya.make b/contrib/restricted/boost/mpl/ya.make
index 554a312980..3fedf8a239 100644
--- a/contrib/restricted/boost/mpl/ya.make
+++ b/contrib/restricted/boost/mpl/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/multi_array/ya.make b/contrib/restricted/boost/multi_array/ya.make
index 42944d86f6..200878edc2 100644
--- a/contrib/restricted/boost/multi_array/ya.make
+++ b/contrib/restricted/boost/multi_array/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/multi_index/ya.make b/contrib/restricted/boost/multi_index/ya.make
index b36b0131e5..7935b94c2b 100644
--- a/contrib/restricted/boost/multi_index/ya.make
+++ b/contrib/restricted/boost/multi_index/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/numeric_conversion/ya.make b/contrib/restricted/boost/numeric_conversion/ya.make
index b8a1b502bf..1e7fd5d076 100644
--- a/contrib/restricted/boost/numeric_conversion/ya.make
+++ b/contrib/restricted/boost/numeric_conversion/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/optional/ya.make b/contrib/restricted/boost/optional/ya.make
index f5fc86fbef..1c6124ec49 100644
--- a/contrib/restricted/boost/optional/ya.make
+++ b/contrib/restricted/boost/optional/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/parameter/ya.make b/contrib/restricted/boost/parameter/ya.make
index 251c719150..99e187dd21 100644
--- a/contrib/restricted/boost/parameter/ya.make
+++ b/contrib/restricted/boost/parameter/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/phoenix/ya.make b/contrib/restricted/boost/phoenix/ya.make
index a16955ff0b..c612414a7c 100644
--- a/contrib/restricted/boost/phoenix/ya.make
+++ b/contrib/restricted/boost/phoenix/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/pool/ya.make b/contrib/restricted/boost/pool/ya.make
index 8773925a7d..ccf63a4237 100644
--- a/contrib/restricted/boost/pool/ya.make
+++ b/contrib/restricted/boost/pool/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/predef/ya.make b/contrib/restricted/boost/predef/ya.make
index e908e6f857..650be04dbc 100644
--- a/contrib/restricted/boost/predef/ya.make
+++ b/contrib/restricted/boost/predef/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/preprocessor/ya.make b/contrib/restricted/boost/preprocessor/ya.make
index 3336f4e751..c7f3766b01 100644
--- a/contrib/restricted/boost/preprocessor/ya.make
+++ b/contrib/restricted/boost/preprocessor/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/program_options/ya.make b/contrib/restricted/boost/program_options/ya.make
index 9bc4c91359..bccf24334b 100644
--- a/contrib/restricted/boost/program_options/ya.make
+++ b/contrib/restricted/boost/program_options/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/property_map/ya.make b/contrib/restricted/boost/property_map/ya.make
index 42f1e30c66..eedeb664ad 100644
--- a/contrib/restricted/boost/property_map/ya.make
+++ b/contrib/restricted/boost/property_map/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/property_tree/ya.make b/contrib/restricted/boost/property_tree/ya.make
index 7f4f4f03b1..6782368368 100644
--- a/contrib/restricted/boost/property_tree/ya.make
+++ b/contrib/restricted/boost/property_tree/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/proto/ya.make b/contrib/restricted/boost/proto/ya.make
index da12ddaf7c..208f5c6903 100644
--- a/contrib/restricted/boost/proto/ya.make
+++ b/contrib/restricted/boost/proto/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/random/ya.make b/contrib/restricted/boost/random/ya.make
index 2a660f2d87..6f4eccc45d 100644
--- a/contrib/restricted/boost/random/ya.make
+++ b/contrib/restricted/boost/random/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/range/ya.make b/contrib/restricted/boost/range/ya.make
index a29289b9a6..e7159eda62 100644
--- a/contrib/restricted/boost/range/ya.make
+++ b/contrib/restricted/boost/range/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/ratio/ya.make b/contrib/restricted/boost/ratio/ya.make
index 3424873861..55402e3254 100644
--- a/contrib/restricted/boost/ratio/ya.make
+++ b/contrib/restricted/boost/ratio/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/rational/ya.make b/contrib/restricted/boost/rational/ya.make
index 21718f3aa4..3bd018e203 100644
--- a/contrib/restricted/boost/rational/ya.make
+++ b/contrib/restricted/boost/rational/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/regex/ya.make b/contrib/restricted/boost/regex/ya.make
index 956cc1dd53..7d0c8cfa6c 100644
--- a/contrib/restricted/boost/regex/ya.make
+++ b/contrib/restricted/boost/regex/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/scope/ya.make b/contrib/restricted/boost/scope/ya.make
index caf5dec21b..1292244470 100644
--- a/contrib/restricted/boost/scope/ya.make
+++ b/contrib/restricted/boost/scope/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/scope_exit/ya.make b/contrib/restricted/boost/scope_exit/ya.make
index 0619777d69..4c20428b51 100644
--- a/contrib/restricted/boost/scope_exit/ya.make
+++ b/contrib/restricted/boost/scope_exit/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/serialization/ya.make b/contrib/restricted/boost/serialization/ya.make
index b677edd692..bd3bc43d3f 100644
--- a/contrib/restricted/boost/serialization/ya.make
+++ b/contrib/restricted/boost/serialization/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/smart_ptr/ya.make b/contrib/restricted/boost/smart_ptr/ya.make
index b3779839c4..626ff3804f 100644
--- a/contrib/restricted/boost/smart_ptr/ya.make
+++ b/contrib/restricted/boost/smart_ptr/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/spirit/ya.make b/contrib/restricted/boost/spirit/ya.make
index ccb51f5ad6..f108f95a4b 100644
--- a/contrib/restricted/boost/spirit/ya.make
+++ b/contrib/restricted/boost/spirit/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/static_assert/ya.make b/contrib/restricted/boost/static_assert/ya.make
index 5aea070712..3681832672 100644
--- a/contrib/restricted/boost/static_assert/ya.make
+++ b/contrib/restricted/boost/static_assert/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/system/ya.make b/contrib/restricted/boost/system/ya.make
index deb146a20a..0bc1a155a5 100644
--- a/contrib/restricted/boost/system/ya.make
+++ b/contrib/restricted/boost/system/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/thread/ya.make b/contrib/restricted/boost/thread/ya.make
index 1549e1d453..5c328bdbba 100644
--- a/contrib/restricted/boost/thread/ya.make
+++ b/contrib/restricted/boost/thread/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/throw_exception/ya.make b/contrib/restricted/boost/throw_exception/ya.make
index 7c8f7c2e90..c9476383fe 100644
--- a/contrib/restricted/boost/throw_exception/ya.make
+++ b/contrib/restricted/boost/throw_exception/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/tokenizer/ya.make b/contrib/restricted/boost/tokenizer/ya.make
index 5c88e62772..55943e10b2 100644
--- a/contrib/restricted/boost/tokenizer/ya.make
+++ b/contrib/restricted/boost/tokenizer/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/tti/ya.make b/contrib/restricted/boost/tti/ya.make
index eb7e76e043..a02ee9d5c0 100644
--- a/contrib/restricted/boost/tti/ya.make
+++ b/contrib/restricted/boost/tti/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/tuple/ya.make b/contrib/restricted/boost/tuple/ya.make
index 497e852c0d..484b69a1ab 100644
--- a/contrib/restricted/boost/tuple/ya.make
+++ b/contrib/restricted/boost/tuple/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/type_index/ya.make b/contrib/restricted/boost/type_index/ya.make
index eb00dc5376..0e9e1b871f 100644
--- a/contrib/restricted/boost/type_index/ya.make
+++ b/contrib/restricted/boost/type_index/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/type_traits/ya.make b/contrib/restricted/boost/type_traits/ya.make
index 5ff75a31b6..443a9f8985 100644
--- a/contrib/restricted/boost/type_traits/ya.make
+++ b/contrib/restricted/boost/type_traits/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/typeof/ya.make b/contrib/restricted/boost/typeof/ya.make
index 482792fb88..e025e2f873 100644
--- a/contrib/restricted/boost/typeof/ya.make
+++ b/contrib/restricted/boost/typeof/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/utility/ya.make b/contrib/restricted/boost/utility/ya.make
index 9e7e870902..2114d7a8f9 100644
--- a/contrib/restricted/boost/utility/ya.make
+++ b/contrib/restricted/boost/utility/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/variant/ya.make b/contrib/restricted/boost/variant/ya.make
index e3e8f50ff3..649b2ae5e7 100644
--- a/contrib/restricted/boost/variant/ya.make
+++ b/contrib/restricted/boost/variant/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/variant2/ya.make b/contrib/restricted/boost/variant2/ya.make
index 4259d6b6cf..e717d77b7c 100644
--- a/contrib/restricted/boost/variant2/ya.make
+++ b/contrib/restricted/boost/variant2/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/winapi/ya.make b/contrib/restricted/boost/winapi/ya.make
index 1ee9d12893..47d480123b 100644
--- a/contrib/restricted/boost/winapi/ya.make
+++ b/contrib/restricted/boost/winapi/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/contrib/restricted/boost/xpressive/ya.make b/contrib/restricted/boost/xpressive/ya.make
index 081bb754fd..d25ab32505 100644
--- a/contrib/restricted/boost/xpressive/ya.make
+++ b/contrib/restricted/boost/xpressive/ya.make
@@ -1,4 +1,4 @@
-# Generated by devtools/yamaker from nixpkgs 22.11.
+# Generated by devtools/yamaker from nixpkgs 24.05.
LIBRARY()
diff --git a/ya b/ya
index 2482ed60dc..14e054bdff 100755
--- a/ya
+++ b/ya
@@ -39,33 +39,33 @@ REGISTRY_ENDPOINT = os.environ.get("YA_REGISTRY_ENDPOINT", "https://devtools-reg
PLATFORM_MAP = {
"data": {
"darwin": {
- "md5": "f5d7587900e420cf0489b1a998568820",
+ "md5": "72d97f4b5e3f6d679e8c80ba990a07c0",
"urls": [
- f"{REGISTRY_ENDPOINT}/7994703512"
+ f"{REGISTRY_ENDPOINT}/8018530253"
]
},
"darwin-arm64": {
- "md5": "695ef9955c52485751ee3c487be10aef",
+ "md5": "ed328a769385939c5a3239fb820525a8",
"urls": [
- f"{REGISTRY_ENDPOINT}/7994699557"
+ f"{REGISTRY_ENDPOINT}/8018528420"
]
},
"linux-aarch64": {
- "md5": "241b2c29298739037664179c59bdda0e",
+ "md5": "c2b9717969cfa225f00f6b53a68e5b87",
"urls": [
- f"{REGISTRY_ENDPOINT}/7994696137"
+ f"{REGISTRY_ENDPOINT}/8018526676"
]
},
"win32-clang-cl": {
- "md5": "9ed331d25ebefeb17e4a2723540cd86f",
+ "md5": "7ec6b941b0d54a9ddbb4407ba8d59104",
"urls": [
- f"{REGISTRY_ENDPOINT}/7994706777"
+ f"{REGISTRY_ENDPOINT}/8018531973"
]
},
"linux": {
- "md5": "93d5a312e3cb039820fe50512e2587c9",
+ "md5": "3cc47f9b19480b745b2837524b9eb139",
"urls": [
- f"{REGISTRY_ENDPOINT}/7994711408"
+ f"{REGISTRY_ENDPOINT}/8018534052"
]
}
}
diff --git a/yql/essentials/docs/scripts/doc_upgrade_arc.sh b/yql/essentials/docs/scripts/doc_upgrade_arc.sh
index a1403408ed..92b6232c71 100755
--- a/yql/essentials/docs/scripts/doc_upgrade_arc.sh
+++ b/yql/essentials/docs/scripts/doc_upgrade_arc.sh
@@ -1,7 +1,7 @@
#!/bin/bash
set -eu
-TARGET_INFO_FILE="$(realpath $1)"
+TARGET_INFO_FILE="$1"
if [ ! -f $TARGET_INFO_FILE ]; then
echo "File $TARGET_INFO_FILE doesn't exist. Creating new one"
@@ -26,6 +26,7 @@ if [ ! -f $TARGET_INFO_FILE ]; then
exit
fi
+TARGET_INFO_FILE="$(realpath $TARGET_INFO_FILE)"
IFS=';' read -r BASE_REV ARC_FROM < "$TARGET_INFO_FILE"
TO=$(dirname $(realpath "$TARGET_INFO_FILE"))
HEAD_REV=$(cd $TO; arc rev-parse HEAD)
diff --git a/yql/essentials/docs/scripts/doc_upgrade_git.sh b/yql/essentials/docs/scripts/doc_upgrade_git.sh
index 86ab33bcb9..c4acd03671 100755
--- a/yql/essentials/docs/scripts/doc_upgrade_git.sh
+++ b/yql/essentials/docs/scripts/doc_upgrade_git.sh
@@ -1,7 +1,7 @@
#!/bin/bash
set -eu
-TARGET_INFO_FILE="$(realpath $1)"
+TARGET_INFO_FILE="$1"
if [ ! -f $TARGET_INFO_FILE ]; then
echo "File $TARGET_INFO_FILE doesn't exist. Creating new one"
@@ -26,6 +26,7 @@ if [ ! -f $TARGET_INFO_FILE ]; then
exit
fi
+TARGET_INFO_FILE="$(realpath $TARGET_INFO_FILE)"
IFS=';' read -r BASE_REV GIT_FROM < "$TARGET_INFO_FILE"
TO=$(dirname $(realpath "$TARGET_INFO_FILE"))
HEAD_REV=$(cd $TO; git rev-parse HEAD)
diff --git a/yql/essentials/tests/sql/minirun/part1/canondata/result.json b/yql/essentials/tests/sql/minirun/part1/canondata/result.json
index bd0f9512c7..cb5503d6f3 100644
--- a/yql/essentials/tests/sql/minirun/part1/canondata/result.json
+++ b/yql/essentials/tests/sql/minirun/part1/canondata/result.json
@@ -837,9 +837,9 @@
],
"test.test[params-primitives--Debug]": [
{
- "checksum": "e232122561df92b9658b6e0e81770672",
- "size": 4184,
- "uri": "https://{canondata_backend}/1847551/378b3bd63cdb48c05228707db1486e34df62729c/resource.tar.gz#test.test_params-primitives--Debug_/opt.yql"
+ "checksum": "fc3e867d5a88ffa4e9b513f55347f2e4",
+ "size": 4214,
+ "uri": "https://{canondata_backend}/1936997/7e6197348eba6c6070acf6ee875cc5f6dc62f616/resource.tar.gz#test.test_params-primitives--Debug_/opt.yql"
}
],
"test.test[params-primitives--Results]": [
diff --git a/yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h b/yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h
index a16582fb4e..6982dbe162 100644
--- a/yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h
+++ b/yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h
@@ -45,19 +45,42 @@ namespace {
template <typename TDerived>
struct TScalarOperationMixin {
- static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args) {
+ static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args)
+ requires requires { TDerived::Execute(TStringRef()); }
+ {
Y_DEBUG_ABORT_UNLESS(IsUtf8(args[0].AsStringRef()));
- auto&& executeResult = TDerived::Execute(args[0].AsStringRef());
+ auto executeResult = TDerived::Execute(args[0].AsStringRef());
+ return ProcessResult(builder, std::move(executeResult), args);
+ }
+
+ static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args)
+ requires requires { TDerived::Execute(TStringRef(), TStringRef()); }
+ {
+ auto executeResult = TDerived::Execute(args[0].AsStringRef(), args[1].AsStringRef());
+ return ProcessResult(builder, std::move(executeResult), args);
+ }
+
+ static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args)
+ requires requires { TDerived::Execute(TStringRef(), TStringRef(), TStringRef()); }
+ {
+ auto executeResult = TDerived::Execute(args[0].AsStringRef(), args[1].AsStringRef(), args[2].AsStringRef());
+ return ProcessResult(builder, std::move(executeResult), args);
+ }
+
+ static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args)
+ requires requires { TDerived::Execute(TStringRef(), TStringRef(), TMaybe<ui64>()); }
+ {
+ auto executeResult = TDerived::Execute(args[0].AsStringRef(), args[1].AsStringRef(), args[2] ? TMaybe<ui64>(args[2].Get<ui64>()) : Nothing());
return ProcessResult(builder, std::move(executeResult), args);
}
private:
- static TUnboxedValue ProcessResult(const IValueBuilder* builder, TString&& newString, const TUnboxedValuePod*) {
- return builder->NewString(std::move(newString));
+ static TUnboxedValue ProcessResult(const IValueBuilder* builder, const TString& newString, const TUnboxedValuePod*) {
+ return builder->NewString(newString);
}
template <typename T>
- static TUnboxedValue ProcessResult(const IValueBuilder* builder, std::variant<TNoChangesTag, T> newValue, const TUnboxedValuePod* initialArg) {
+ static TUnboxedValue ProcessResult(const IValueBuilder* builder, const std::variant<TNoChangesTag, T>& newValue, const TUnboxedValuePod* initialArg) {
if (std::holds_alternative<T>(newValue)) {
return ProcessResult(builder, std::move(std::get<T>(newValue)), initialArg);
} else {
@@ -65,7 +88,17 @@ namespace {
}
}
- static TUnboxedValue ProcessResult(const IValueBuilder* builder, bool result, const TUnboxedValuePod*) {
+ template <typename T>
+ static TUnboxedValue ProcessResult(const IValueBuilder* builder, const TMaybe<T>& newValue, const TUnboxedValuePod* initialArg) {
+ if (newValue.Defined()) {
+ return ProcessResult(builder, *newValue, initialArg);
+ } else {
+ return TUnboxedValuePod();
+ }
+ }
+
+ template <typename T, typename = std::enable_if_t<TPrimitiveDataType<T>::Result>>
+ static TUnboxedValue ProcessResult(const IValueBuilder* builder, T result, const TUnboxedValuePod*) {
Y_UNUSED(builder);
return TUnboxedValuePod(result);
}
@@ -73,18 +106,61 @@ namespace {
template <typename TDerived>
struct TBlockOperationMixin {
- template <typename Sync>
- static void DoExecute(const TBlockItem arg, const Sync& sync) {
+ template <typename TSink>
+ static void BlockDoExecute(const TBlockItem arg, const TSink& sink)
+ requires requires { TDerived::Execute(TStringRef()); }
+ {
Y_DEBUG_ABORT_UNLESS(IsUtf8(arg.AsStringRef()));
- auto&& executeResult = TDerived::Execute(arg.AsStringRef());
- TBlockItem boxedValue = ProcessResult(std::move(executeResult), arg);
- sync(boxedValue);
+ auto executeResult = TDerived::Execute(arg.AsStringRef());
+ TBlockItem boxedValue = ProcessResult(executeResult, arg);
+ sink(boxedValue);
+ }
+
+ template <typename TSink>
+ static void BlockDoExecute(const TBlockItem arg1, const TBlockItem arg2, const TSink& sink)
+ requires requires { TDerived::Execute(TStringRef(), TStringRef()); }
+ {
+ auto executeResult = TDerived::Execute(arg1.AsStringRef(),
+ arg2.AsStringRef());
+ TBlockItem boxedValue = ProcessResult(executeResult, arg1);
+ sink(boxedValue);
+ }
+
+ template <typename TSink>
+ static void BlockDoExecute(const TBlockItem args, const TSink& sink)
+ requires(requires { TDerived::Execute(TStringRef(), TStringRef(), TStringRef()); })
+ {
+ auto executeResult = TDerived::Execute(args.GetElement(0).AsStringRef(),
+ args.GetElement(1).AsStringRef(),
+ args.GetElement(2).AsStringRef());
+ TBlockItem boxedValue = ProcessResult(executeResult, args.GetElement(0));
+ sink(boxedValue);
+ }
+
+ template <typename TSink>
+ static void BlockDoExecute(const TBlockItem args, const TSink& sink)
+ requires(requires { TDerived::Execute(TStringRef(), TStringRef(), TMaybe<ui64>(0ULL)); })
+ {
+ auto executeResult = TDerived::Execute(args.GetElement(0).AsStringRef(),
+ args.GetElement(1).AsStringRef(),
+ (args.GetElement(2) ? TMaybe<ui64>(args.GetElement(2).Get<ui64>()) : Nothing()));
+ TBlockItem boxedValue = ProcessResult(executeResult, args.GetElement(0));
+ sink(boxedValue);
}
private:
static TBlockItem ProcessResult(const TString& newString, const TBlockItem arg) {
Y_UNUSED(arg);
- return TBlockItem(std::move(newString));
+ return TBlockItem(newString);
+ }
+
+ template <typename T>
+ static TBlockItem ProcessResult(const TMaybe<T>& newValue, const TBlockItem arg) {
+ if (newValue.Defined()) {
+ return ProcessResult(*newValue, arg);
+ } else {
+ return TBlockItem();
+ }
}
template <typename T>
@@ -96,17 +172,15 @@ namespace {
}
}
- static TBlockItem ProcessResult(bool result, const TBlockItem arg) {
+ template <typename T, typename = std::enable_if_t<TPrimitiveDataType<T>::Result>>
+ static TBlockItem ProcessResult(T result, const TBlockItem arg) {
Y_UNUSED(arg);
return TBlockItem(result);
}
};
template <typename TDerived>
- struct TOperationMixin: public TBlockOperationMixin<TDerived>, public TScalarOperationMixin<TDerived> {
- using TBlockOperationMixin<TDerived>::DoExecute;
- using TScalarOperationMixin<TDerived>::DoExecute;
- };
+ struct TOperationMixin: public TBlockOperationMixin<TDerived>, public TScalarOperationMixin<TDerived> {};
template <auto mode>
struct TNormalizeUTF8: public TOperationMixin<TNormalizeUTF8<mode>> {
@@ -145,8 +219,210 @@ namespace {
}
};
-#define DEFINE_UTF8_OPERATION(udfName, Executor, signature) \
- BEGIN_SIMPLE_STRICT_ARROW_UDF(T##udfName, signature) { \
+ struct TLengthGetter: public TOperationMixin<TLengthGetter> {
+ static ui64 Execute(TStringRef inputRef) {
+ size_t result;
+ GetNumberOfUTF8Chars(inputRef.Data(), inputRef.Size(), result);
+ return static_cast<ui64>(result);
+ }
+ };
+
+ struct TReverser: public TOperationMixin<TReverser> {
+ static TString Execute(TStringRef inputRef) {
+ auto wide = UTF8ToWide(inputRef);
+ ReverseInPlace(wide);
+ return WideToUTF8(wide);
+ }
+ };
+
+ struct TStripper: public TOperationMixin<TStripper> {
+ static TString Execute(TStringRef inputRef) {
+ const TUtf32String input = UTF8ToUTF32<true>(inputRef);
+ const auto& result = StripString(input, IsUnicodeSpaceAdapter(input.begin()));
+ return WideToUTF8(result);
+ }
+ };
+
+ struct TAllRemover: public TOperationMixin<TAllRemover> {
+ static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef removeRef) {
+ TUtf32String input = UTF8ToUTF32<true>(inputRef);
+ const TUtf32String remove = UTF8ToUTF32<true>(removeRef);
+ const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
+ size_t tpos = 0;
+ for (const wchar32 c : input) {
+ if (!chars.contains(c)) {
+ input[tpos++] = c;
+ }
+ }
+ if (tpos != input.size()) {
+ input.resize(tpos);
+ return WideToUTF8(input);
+ }
+ return TNoChangesTag{};
+ }
+ };
+
+ struct TFirstRemover: public TOperationMixin<TFirstRemover> {
+ static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef removeRef) {
+ TUtf32String input = UTF8ToUTF32<true>(inputRef);
+ const auto remove = UTF8ToUTF32<true>(removeRef);
+ const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
+ for (auto it = input.cbegin(); it != input.cend(); ++it) {
+ if (chars.contains(*it)) {
+ input.erase(it);
+ return WideToUTF8(input);
+ }
+ }
+ return TNoChangesTag{};
+ }
+ };
+
+ struct TUnicodeSetMatcher: public TOperationMixin<TUnicodeSetMatcher> {
+ static bool Execute(TStringRef inputRef, TStringRef customCategoryRef) {
+ const TStringBuf input(inputRef);
+ const TUtf16String& customCategory = UTF8ToWide(customCategoryRef);
+ TUnicodeSet unicodeSet;
+ try {
+ unicodeSet.Parse(customCategory);
+ } catch (...) {
+ UdfTerminate((TStringBuilder() << "Failed to parse unicode set: " << CurrentExceptionMessage()).c_str());
+ }
+ wchar32 rune;
+ const unsigned char* cur = reinterpret_cast<const unsigned char*>(input.begin());
+ const unsigned char* last = reinterpret_cast<const unsigned char*>(input.end());
+ while (cur != last) {
+ ReadUTF8CharAndAdvance(rune, cur, last);
+ if (!unicodeSet.Has(rune)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ };
+
+ struct TLevensteinDistanceFinder: public TOperationMixin<TLevensteinDistanceFinder> {
+ static ui64 Execute(TStringRef leftRef, TStringRef rightRef) {
+ const TStringBuf left(leftRef);
+ const TStringBuf right(rightRef);
+ const auto& leftUtf32 = UTF8ToUTF32<true>(left);
+ const auto& rightUtf32 = UTF8ToUTF32<true>(right);
+ return NLevenshtein::Distance(leftUtf32, rightUtf32);
+ }
+ };
+
+ struct TLastRemoval: public TOperationMixin<TLastRemoval> {
+ static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef removeRef) {
+ TUtf32String input = UTF8ToUTF32<true>(inputRef);
+ const TUtf32String remove = UTF8ToUTF32<true>(removeRef);
+ const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
+ for (auto it = input.crbegin(); it != input.crend(); ++it) {
+ if (chars.contains(*it)) {
+ input.erase(input.crend() - it - 1, 1);
+ return WideToUTF8(input);
+ }
+ }
+ return TNoChangesTag{};
+ }
+ };
+
+ struct TAllReplacer: public TOperationMixin<TAllReplacer> {
+ static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef whatReplace, TStringRef toReplace) {
+ if (TString result(inputRef); SubstGlobal(result, whatReplace, toReplace)) {
+ return result;
+ } else {
+ return TNoChangesTag{};
+ }
+ }
+ // Disable implict casts for arguments.
+ template <typename... Args>
+ static auto Execute(Args&&... args) = delete;
+ };
+
+ struct TFirstReplacer: public TOperationMixin<TFirstReplacer> {
+ static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef whatReplace, TStringRef toReplace) {
+ std::string result(inputRef);
+ const std::string_view what(whatReplace);
+ if (const auto index = result.find(what); index != std::string::npos) {
+ result.replace(index, what.size(), std::string_view(toReplace));
+ return result;
+ }
+ return TNoChangesTag{};
+ }
+ // Disable implict casts for arguments.
+ template <typename... Args>
+ static auto Execute(Args&&... args) = delete;
+ };
+
+ struct TLastReplacer: public TOperationMixin<TLastReplacer> {
+ static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef whatReplace, TStringRef toReplace) {
+ std::string result(inputRef);
+ const std::string_view what(whatReplace);
+ if (const auto index = result.rfind(what); index != std::string::npos) {
+ result.replace(index, what.size(), std::string_view(toReplace));
+ return result;
+ }
+ return TNoChangesTag{};
+ }
+ // Disable implict casts for arguments.
+ template <typename... Args>
+ static auto Execute(Args&&... args) = delete;
+ };
+
+ struct TFinder: public TOperationMixin<TFinder> {
+ static TMaybe<ui64> Execute(TStringRef inputRef, TStringRef whatFind, TMaybe<ui64> whereFind) {
+ const std::string_view string(inputRef);
+ const std::string_view needle(whatFind);
+ std::string_view::size_type pos = 0U;
+
+ if (auto p = whereFind.GetOrElse(0ULL)) {
+ for (auto ptr = string.data(); p && pos < string.size(); --p) {
+ const auto width = WideCharSize(*ptr);
+ pos += width;
+ ptr += width;
+ }
+ }
+
+ if (const auto find = string.find(needle, pos); std::string_view::npos != find) {
+ size_t result;
+ GetNumberOfUTF8Chars(string.data(), find, result);
+ return static_cast<ui64>(result);
+ }
+ return Nothing();
+ }
+ // Disable implict casts for arguments.
+ template <typename... Args>
+ static auto Execute(Args&&... args) = delete;
+ };
+
+ struct TRFinder: public TOperationMixin<TRFinder> {
+ static TMaybe<ui64> Execute(TStringRef inputRef, TStringRef whatFind, TMaybe<ui64> whereFind) {
+ const std::string_view string(inputRef);
+ const std::string_view needle(whatFind);
+ std::string_view::size_type pos = std::string_view::npos;
+
+ if (auto p = whereFind.GetOrElse(std::string_view::npos); std::string_view::npos != p) {
+ pos = 0ULL;
+ for (auto ptr = string.data(); p && pos < string.size(); --p) {
+ const auto width = WideCharSize(*ptr);
+ pos += width;
+ ptr += width;
+ }
+ }
+
+ if (const auto find = string.rfind(needle, pos); std::string_view::npos != find) {
+ size_t result;
+ GetNumberOfUTF8Chars(string.data(), find, result);
+ return static_cast<ui64>(result);
+ }
+ return Nothing();
+ }
+ // Disable implict casts for arguments.
+ template <typename... Args>
+ static auto Execute(Args&&... args) = delete;
+ };
+
+#define DEFINE_UTF8_OPERATION_STRICT(udfName, Executor, signature, optArgs) \
+ BEGIN_SIMPLE_STRICT_ARROW_UDF_WITH_OPTIONAL_ARGS(T##udfName, signature, optArgs) { \
return Executor::DoExecute(valueBuilder, args); \
} \
\
@@ -155,30 +431,86 @@ namespace {
template <typename TSink> \
static void Process(const IValueBuilder* valueBuilder, TBlockItem arg1, const TSink& sink) { \
Y_UNUSED(valueBuilder); \
- Executor::DoExecute(arg1, sink); \
+ Executor::BlockDoExecute(arg1, sink); \
+ } \
+ }; \
+ \
+ END_SIMPLE_ARROW_UDF(T##udfName, T##udfName##KernelExec::Do)
+
+#define DEFINE_UTF8_OPERATION_BIN_BASE(macro, udfName, Executor, signature, optArgs) \
+ macro(T##udfName, signature, optArgs) { \
+ return Executor::DoExecute(valueBuilder, args); \
+ } \
+ \
+ struct T##udfName##KernelExec \
+ : public TBinaryKernelExec<T##udfName##KernelExec> { \
+ template <typename TSink> \
+ static void Process(const IValueBuilder* valueBuilder, TBlockItem arg1, TBlockItem arg2, const TSink& sink) { \
+ Y_UNUSED(valueBuilder); \
+ Executor::BlockDoExecute(arg1, arg2, sink); \
+ } \
+ }; \
+ \
+ END_SIMPLE_ARROW_UDF(T##udfName, T##udfName##KernelExec::Do)
+
+#define DEFINE_UTF8_OPERATION_BIN_STRICT(udfName, Executor, signature, optArgs) \
+ DEFINE_UTF8_OPERATION_BIN_BASE(BEGIN_SIMPLE_STRICT_ARROW_UDF_WITH_OPTIONAL_ARGS, udfName, Executor, signature, optArgs)
+
+#define DEFINE_UTF8_OPERATION_BIN_NOT_STRICT(udfName, Executor, signature, optArgs) \
+ DEFINE_UTF8_OPERATION_BIN_BASE(BEGIN_SIMPLE_ARROW_UDF_WITH_OPTIONAL_ARGS, udfName, Executor, signature, optArgs)
+
+#define DEFINE_UTF8_OPERATION_MANY_STRICT(udfName, Executor, signature, argsCount, optArgsCount) \
+ BEGIN_SIMPLE_STRICT_ARROW_UDF_WITH_OPTIONAL_ARGS(T##udfName, signature, optArgsCount) { \
+ return Executor::DoExecute(valueBuilder, args); \
+ } \
+ \
+ struct T##udfName##KernelExec \
+ : public TGenericKernelExec<T##udfName##KernelExec, argsCount> { \
+ template <typename TSink> \
+ static void Process(const IValueBuilder* valueBuilder, TBlockItem args, const TSink& sink) { \
+ Y_UNUSED(valueBuilder); \
+ Executor::BlockDoExecute(args, sink); \
} \
}; \
\
END_SIMPLE_ARROW_UDF(T##udfName, T##udfName##KernelExec::Do)
- DEFINE_UTF8_OPERATION(Normalize, TNormalizeUTF8<NFC>, TUtf8(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(NormalizeNFD, TNormalizeUTF8<NFD>, TUtf8(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(NormalizeNFC, TNormalizeUTF8<NFC>, TUtf8(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(NormalizeNFKD, TNormalizeUTF8<NFKD>, TUtf8(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(NormalizeNFKC, TNormalizeUTF8<NFKC>, TUtf8(TAutoMap<TUtf8>));
-
- DEFINE_UTF8_OPERATION(IsAscii, TCheckAllChars<IsAscii>, bool(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(IsSpace, TCheckAllChars<IsSpace>, bool(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(IsUpper, TCheckAllChars<IsUpper>, bool(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(IsLower, TCheckAllChars<IsLower>, bool(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(IsDigit, TCheckAllChars<IsDigit>, bool(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(IsAlpha, TCheckAllChars<IsAlpha>, bool(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(IsAlnum, TCheckAllChars<IsAlnum>, bool(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(IsHex, TCheckAllChars<IsHexdigit>, bool(TAutoMap<TUtf8>));
-
- DEFINE_UTF8_OPERATION(ToTitle, TStringToStringMapper<ToTitle>, TUtf8(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(ToUpper, TStringToStringMapper<ToUpper>, TUtf8(TAutoMap<TUtf8>));
- DEFINE_UTF8_OPERATION(ToLower, TStringToStringMapper<ToLower>, TUtf8(TAutoMap<TUtf8>));
+ DEFINE_UTF8_OPERATION_STRICT(Normalize, TNormalizeUTF8<NFC>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(NormalizeNFD, TNormalizeUTF8<NFD>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(NormalizeNFC, TNormalizeUTF8<NFC>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(NormalizeNFKD, TNormalizeUTF8<NFKD>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(NormalizeNFKC, TNormalizeUTF8<NFKC>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+
+ DEFINE_UTF8_OPERATION_STRICT(IsAscii, TCheckAllChars<IsAscii>, bool(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(IsSpace, TCheckAllChars<IsSpace>, bool(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(IsUpper, TCheckAllChars<IsUpper>, bool(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(IsLower, TCheckAllChars<IsLower>, bool(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(IsDigit, TCheckAllChars<IsDigit>, bool(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(IsAlpha, TCheckAllChars<IsAlpha>, bool(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(IsAlnum, TCheckAllChars<IsAlnum>, bool(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(IsHex, TCheckAllChars<IsHexdigit>, bool(TAutoMap<TUtf8>), /*optArgs=*/0);
+
+ DEFINE_UTF8_OPERATION_STRICT(ToTitle, TStringToStringMapper<ToTitle>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(ToUpper, TStringToStringMapper<ToUpper>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(ToLower, TStringToStringMapper<ToLower>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+
+ DEFINE_UTF8_OPERATION_STRICT(GetLength, TLengthGetter, ui64(TAutoMap<TUtf8>), /*optArgs=*/0);
+
+ DEFINE_UTF8_OPERATION_STRICT(Reverse, TReverser, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_STRICT(Strip, TStripper, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0);
+
+ DEFINE_UTF8_OPERATION_BIN_STRICT(RemoveAll, TAllRemover, TUtf8(TAutoMap<TUtf8>, TUtf8), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_BIN_STRICT(RemoveFirst, TFirstRemover, TUtf8(TAutoMap<TUtf8>, TUtf8), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_BIN_NOT_STRICT(IsUnicodeSet, TUnicodeSetMatcher, bool(TAutoMap<TUtf8>, TUtf8), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_BIN_STRICT(LevensteinDistance, TLevensteinDistanceFinder, ui64(TAutoMap<TUtf8>, TAutoMap<TUtf8>), /*optArgs=*/0);
+ DEFINE_UTF8_OPERATION_BIN_STRICT(RemoveLast, TLastRemoval, TUtf8(TAutoMap<TUtf8>, TUtf8), /*optArgs=*/0);
+
+ DEFINE_UTF8_OPERATION_MANY_STRICT(ReplaceAll, TAllReplacer, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8), /*argsCount=*/3, /*optionalArgs=*/0);
+ DEFINE_UTF8_OPERATION_MANY_STRICT(ReplaceFirst, TFirstReplacer, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8), /*argsCount=*/3, /*optionalArgs=*/0);
+ DEFINE_UTF8_OPERATION_MANY_STRICT(ReplaceLast, TLastReplacer, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8), /*argsCount=*/3, /*optionalArgs=*/0);
+
+ DEFINE_UTF8_OPERATION_MANY_STRICT(Find, TFinder, TOptional<ui64>(TAutoMap<TUtf8>, TUtf8, TOptional<ui64>), /*argsCount=*/3, /*optionalArgs=*/1);
+ DEFINE_UTF8_OPERATION_MANY_STRICT(RFind, TRFinder, TOptional<ui64>(TAutoMap<TUtf8>, TUtf8, TOptional<ui64>), /*argsCount=*/3, /*optionalArgs=*/1);
SIMPLE_UDF(TIsUtf, bool(TOptional<char*>)) {
Y_UNUSED(valueBuilder);
@@ -189,14 +521,6 @@ namespace {
}
}
- SIMPLE_UDF(TGetLength, ui64(TAutoMap<TUtf8>)) {
- Y_UNUSED(valueBuilder);
- const auto& inputRef = args[0].AsStringRef();
- size_t result;
- GetNumberOfUTF8Chars(inputRef.Data(), inputRef.Size(), result);
- return TUnboxedValuePod(static_cast<ui64>(result));
- }
-
SIMPLE_UDF_WITH_OPTIONAL_ARGS(TToUint64, ui64(TAutoMap<TUtf8>, TOptional<ui16>), 1) {
Y_UNUSED(valueBuilder);
const TString inputStr(args[0].AsStringRef());
@@ -252,51 +576,6 @@ namespace {
return valueBuilder->NewString(SubstrUTF8(input, from, len));
}
- SIMPLE_UDF_WITH_OPTIONAL_ARGS(TFind, TOptional<ui64>(TAutoMap<TUtf8>, TUtf8, TOptional<ui64>), 1) {
- Y_UNUSED(valueBuilder);
- const std::string_view string(args[0].AsStringRef());
- const std::string_view needle(args[1].AsStringRef());
- std::string_view::size_type pos = 0U;
-
- if (auto p = args[2].GetOrDefault<ui64>(0ULL)) {
- for (auto ptr = string.data(); p && pos < string.size(); --p) {
- const auto width = WideCharSize(*ptr);
- pos += width;
- ptr += width;
- }
- }
-
- if (const auto find = string.find(needle, pos); std::string_view::npos != find) {
- size_t result;
- GetNumberOfUTF8Chars(string.data(), find, result);
- return TUnboxedValuePod(static_cast<ui64>(result));
- }
- return TUnboxedValuePod();
- }
-
- SIMPLE_UDF_WITH_OPTIONAL_ARGS(TRFind, TOptional<ui64>(TAutoMap<TUtf8>, TUtf8, TOptional<ui64>), 1) {
- Y_UNUSED(valueBuilder);
- const std::string_view string(args[0].AsStringRef());
- const std::string_view needle(args[1].AsStringRef());
- std::string_view::size_type pos = std::string_view::npos;
-
- if (auto p = args[2].GetOrDefault<ui64>(std::string_view::npos); std::string_view::npos != p) {
- pos = 0ULL;
- for (auto ptr = string.data(); p && pos < string.size(); --p) {
- const auto width = WideCharSize(*ptr);
- pos += width;
- ptr += width;
- }
- }
-
- if (const auto find = string.rfind(needle, pos); std::string_view::npos != find) {
- size_t result;
- GetNumberOfUTF8Chars(string.data(), find, result);
- return TUnboxedValuePod(static_cast<ui64>(result));
- }
- return TUnboxedValuePod();
- }
-
using TTmpVector = TSmallVec<TUnboxedValue, TUnboxedValue::TAllocator>;
template <typename TIt>
@@ -406,86 +685,6 @@ namespace {
return valueBuilder->NewString(JoinSeq(delimeter, items));
}
- SIMPLE_UDF(TLevensteinDistance, ui64(TAutoMap<TUtf8>, TAutoMap<TUtf8>)) {
- Y_UNUSED(valueBuilder);
- const TStringBuf left(args[0].AsStringRef());
- const TStringBuf right(args[1].AsStringRef());
- const auto& leftUtf32 = UTF8ToUTF32<true>(left);
- const auto& rightUtf32 = UTF8ToUTF32<true>(right);
- const ui64 result = NLevenshtein::Distance(leftUtf32, rightUtf32);
- return TUnboxedValuePod(result);
- }
-
- SIMPLE_UDF(TReplaceAll, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8)) {
- if (TString result(args[0].AsStringRef()); SubstGlobal(result, args[1].AsStringRef(), args[2].AsStringRef()))
- return valueBuilder->NewString(result);
- else
- return args[0];
- }
-
- SIMPLE_UDF(TReplaceFirst, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8)) {
- std::string result(args[0].AsStringRef());
- const std::string_view what(args[1].AsStringRef());
- if (const auto index = result.find(what); index != std::string::npos) {
- result.replace(index, what.size(), std::string_view(args[2].AsStringRef()));
- return valueBuilder->NewString(result);
- }
- return args[0];
- }
-
- SIMPLE_UDF(TReplaceLast, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8)) {
- std::string result(args[0].AsStringRef());
- const std::string_view what(args[1].AsStringRef());
- if (const auto index = result.rfind(what); index != std::string::npos) {
- result.replace(index, what.size(), std::string_view(args[2].AsStringRef()));
- return valueBuilder->NewString(result);
- }
- return args[0];
- }
-
- SIMPLE_UDF(TRemoveAll, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef());
- const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef());
- const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
- size_t tpos = 0;
- for (const wchar32 c : input) {
- if (!chars.contains(c)) {
- input[tpos++] = c;
- }
- }
- if (tpos != input.size()) {
- input.resize(tpos);
- return valueBuilder->NewString(WideToUTF8(input));
- }
- return args[0];
- }
-
- SIMPLE_UDF(TRemoveFirst, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef());
- const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef());
- const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
- for (auto it = input.cbegin(); it != input.cend(); ++it) {
- if (chars.contains(*it)) {
- input.erase(it);
- return valueBuilder->NewString(WideToUTF8(input));
- }
- }
- return args[0];
- }
-
- SIMPLE_UDF(TRemoveLast, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef());
- const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef());
- const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
- for (auto it = input.crbegin(); it != input.crend(); ++it) {
- if (chars.contains(*it)) {
- input.erase(input.crend() - it - 1, 1);
- return valueBuilder->NewString(WideToUTF8(input));
- }
- }
- return args[0];
- }
-
SIMPLE_UDF(TToCodePointList, TListType<ui32>(TAutoMap<TUtf8>)) {
size_t codePointCount = 0;
const auto& inputRef = args[0].AsStringRef();
@@ -552,42 +751,6 @@ namespace {
return valueBuilder->NewString(TStringRef(buffer.data(), buffer.size()));
}
- SIMPLE_UDF(TReverse, TUtf8(TAutoMap<TUtf8>)) {
- auto wide = UTF8ToWide(args[0].AsStringRef());
- ReverseInPlace(wide);
- return valueBuilder->NewString(WideToUTF8(wide));
- }
-
- SIMPLE_UDF(TStrip, TUtf8(TAutoMap<TUtf8>)) {
- const TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef());
- const auto& result = StripString(input, IsUnicodeSpaceAdapter(input.begin()));
- return valueBuilder->NewString(WideToUTF8(result));
- }
-
- SIMPLE_UDF(TIsUnicodeSet, bool(TAutoMap<TUtf8>, TUtf8)) {
- Y_UNUSED(valueBuilder);
- const TStringBuf input(args[0].AsStringRef());
- const TUtf16String& customCategory = UTF8ToWide(args[1].AsStringRef());
- TUnicodeSet unicodeSet;
- try {
- unicodeSet.Parse(customCategory);
- } catch (...) {
- UdfTerminate((TStringBuilder() << "Failed to parse unicode set: " << CurrentExceptionMessage()).c_str());
- }
- bool result = true;
- wchar32 rune;
- const unsigned char* cur = reinterpret_cast<const unsigned char*>(input.begin());
- const unsigned char* last = reinterpret_cast<const unsigned char*>(input.end());
- while (cur != last) {
- ReadUTF8CharAndAdvance(rune, cur, last);
- if (!unicodeSet.Has(rune)) {
- result = false;
- break;
- }
- }
- return TUnboxedValuePod(result);
- }
-
#define EXPORTED_UNICODE_BASE_UDF \
TIsUtf, \
TGetLength, \
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/result.json b/yql/essentials/udfs/common/unicode_base/test/canondata/result.json
index 8189dd16e0..bac6e1ebc4 100644
--- a/yql/essentials/udfs/common/unicode_base/test/canondata/result.json
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/result.json
@@ -1,4 +1,9 @@
{
+ "test.test[BlockFind]": [
+ {
+ "uri": "file://test.test_BlockFind_/results.txt"
+ }
+ ],
"test.test[BlockIsCategory]": [
{
"uri": "file://test.test_BlockIsCategory_/results.txt"
@@ -9,11 +14,31 @@
"uri": "file://test.test_BlockNormalize_/results.txt"
}
],
+ "test.test[BlockRemove]": [
+ {
+ "uri": "file://test.test_BlockRemove_/results.txt"
+ }
+ ],
+ "test.test[BlockReplace]": [
+ {
+ "uri": "file://test.test_BlockReplace_/results.txt"
+ }
+ ],
+ "test.test[BlockStrip]": [
+ {
+ "uri": "file://test.test_BlockStrip_/results.txt"
+ }
+ ],
"test.test[BlockTo]": [
{
"uri": "file://test.test_BlockTo_/results.txt"
}
],
+ "test.test[BlockUnicode]": [
+ {
+ "uri": "file://test.test_BlockUnicode_/results.txt"
+ }
+ ],
"test.test[Find]": [
{
"uri": "file://test.test_Find_/results.txt"
@@ -94,6 +119,11 @@
"uri": "file://test.test_TryToUint64_/results.txt"
}
],
+ "test.test[UnicodeCodePoint]": [
+ {
+ "uri": "file://test.test_UnicodeCodePoint_/results.txt"
+ }
+ ],
"test.test[Unicode]": [
{
"uri": "file://test.test_Unicode_/results.txt"
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockFind_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockFind_/results.txt
new file mode 100644
index 0000000000..4ee0b05ad2
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockFind_/results.txt
@@ -0,0 +1,134 @@
+[
+ {
+ "Write" = [
+ {
+ "Type" = [
+ "ListType";
+ [
+ "StructType";
+ [
+ [
+ "value";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ];
+ [
+ "column1";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ];
+ [
+ "column2";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ];
+ [
+ "column3";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ];
+ [
+ "column4";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ];
+ [
+ "column5";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ];
+ [
+ "column6";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ]
+ ]
+ ]
+ ];
+ "Data" = [
+ [
+ [
+ "l\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm\xC3\xA4\xC3\x9Fig"
+ ];
+ [
+ "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm"
+ ];
+ [
+ "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"
+ ];
+ [
+ "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, "
+ ];
+ [
+ "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k"
+ ];
+ [
+ "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"
+ ];
+ [
+ "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r"
+ ]
+ ];
+ [
+ [
+ "l\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm\xC3\xA4\xC3\x9Fig"
+ ];
+ [
+ "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm"
+ ];
+ [
+ "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"
+ ];
+ [
+ "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, "
+ ];
+ [
+ "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k"
+ ];
+ [
+ "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"
+ ];
+ [
+ "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r"
+ ]
+ ]
+ ]
+ }
+ ]
+ }
+] \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockRemove_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockRemove_/results.txt
new file mode 100644
index 0000000000..4004c75199
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockRemove_/results.txt
@@ -0,0 +1,100 @@
+[
+ {
+ "Write" = [
+ {
+ "Type" = [
+ "ListType";
+ [
+ "StructType";
+ [
+ [
+ "value";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "all";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "first";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "last";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "first2";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "last2";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ]
+ ]
+ ];
+ "Data" = [
+ [
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2";
+ "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2";
+ "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
+ ];
+ [
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"
+ ];
+ [
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB2\xD1\x8B\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2";
+ "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2";
+ "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
+ ];
+ [
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x8B"
+ ];
+ [
+ "";
+ "";
+ "";
+ "";
+ "";
+ ""
+ ]
+ ]
+ }
+ ]
+ }
+] \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockReplace_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockReplace_/results.txt
new file mode 100644
index 0000000000..bdb61e7f5c
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockReplace_/results.txt
@@ -0,0 +1,124 @@
+[
+ {
+ "Write" = [
+ {
+ "Type" = [
+ "ListType";
+ [
+ "StructType";
+ [
+ [
+ "value";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "all";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "first";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "last";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "first2";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "last2";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "first3";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "last3";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ]
+ ]
+ ];
+ "Data" = [
+ [
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2z\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z";
+ "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2";
+ "\xD1\x8B\xD0\xB2zzz\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz"
+ ];
+ [
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fz\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0z\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fzzz\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0zzz\xD1\x87\xD1\x8B"
+ ];
+ [
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "z\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z";
+ "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2";
+ "zzz\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz"
+ ];
+ [
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2z\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0z\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2zzz\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x84\xD1\x8B"
+ ];
+ [
+ "";
+ "";
+ "";
+ "";
+ "";
+ "";
+ "";
+ ""
+ ]
+ ]
+ }
+ ]
+ }
+] \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockStrip_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockStrip_/results.txt
new file mode 100644
index 0000000000..22df398114
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockStrip_/results.txt
@@ -0,0 +1,56 @@
+[
+ {
+ "Write" = [
+ {
+ "Type" = [
+ "ListType";
+ [
+ "StructType";
+ [
+ [
+ "value";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "column1";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ]
+ ]
+ ];
+ "Data" = [
+ [
+ "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0 \xD0\xB1\xD0\xB5\xD0\xB7 \xD0\xB2\xD0\xBD\xD0\xB5\xD1\x88\xD0\xBD\xD0\xB8\xD1\x85 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2";
+ "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0 \xD0\xB1\xD0\xB5\xD0\xB7 \xD0\xB2\xD0\xBD\xD0\xB5\xD1\x88\xD0\xBD\xD0\xB8\xD1\x85 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2"
+ ];
+ [
+ " \xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBB\xD0\xB5\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB";
+ "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBB\xD0\xB5\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB"
+ ];
+ [
+ "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB ";
+ "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB"
+ ];
+ [
+ "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0_\xD1\x81\xD0\xBE\xD0\xB2\xD1\x81\xD0\xB5\xD0\xBC_\xD0\xB1\xD0\xB5\xD0\xB7_\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2";
+ "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0_\xD1\x81\xD0\xBE\xD0\xB2\xD1\x81\xD0\xB5\xD0\xBC_\xD0\xB1\xD0\xB5\xD0\xB7_\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2"
+ ];
+ [
+ "\xE2\x80\x89\xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4+\xD0\xBF\xD0\xB5\xD1\x80\xD0\xB5\xD0\xB2\xD0\xBE\xD0\xB4 \xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB8\n";
+ "\xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4+\xD0\xBF\xD0\xB5\xD1\x80\xD0\xB5\xD0\xB2\xD0\xBE\xD0\xB4 \xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB8"
+ ];
+ [
+ "";
+ ""
+ ]
+ ]
+ }
+ ]
+ }
+] \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockUnicode_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockUnicode_/results.txt
new file mode 100644
index 0000000000..76cdb42446
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockUnicode_/results.txt
@@ -0,0 +1,220 @@
+[
+ {
+ "Write" = [
+ {
+ "Type" = [
+ "ListType";
+ [
+ "StructType";
+ [
+ [
+ "value";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "is";
+ [
+ "DataType";
+ "Bool"
+ ]
+ ];
+ [
+ "length";
+ [
+ "DataType";
+ "Uint64"
+ ]
+ ];
+ [
+ "one_end_substring";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "two_end_substring";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "remove_all";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "levenstein";
+ [
+ "DataType";
+ "Uint64"
+ ]
+ ];
+ [
+ "reverse";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "find";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Uint64"
+ ]
+ ]
+ ];
+ [
+ "rfind";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Uint64"
+ ]
+ ]
+ ];
+ [
+ "find_from";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Uint64"
+ ]
+ ]
+ ];
+ [
+ "rfind_from";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Uint64"
+ ]
+ ]
+ ]
+ ]
+ ]
+ ];
+ "Data" = [
+ [
+ "Eyl\xC3\xBCl";
+ %true;
+ "5";
+ "yl\xC3\xBCl";
+ "Ey";
+ "Eyl\xC3\xBCl";
+ "5";
+ "l\xC3\xBClyE";
+ #;
+ #;
+ #;
+ #
+ ];
+ [
+ "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F";
+ %true;
+ "6";
+ "\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F";
+ "\xD0\xB6\xD0\xBD";
+ "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F";
+ "5";
+ "\xD1\x8F\xD0\xBD\xD1\x9E\xD1\x96\xD0\xBD\xD0\xB6";
+ #;
+ #;
+ #;
+ #
+ ];
+ [
+ "\xC3\xBAnora";
+ %true;
+ "5";
+ "nora";
+ "\xC3\xBAn";
+ "\xC3\xBAnoa";
+ "5";
+ "aron\xC3\xBA";
+ #;
+ #;
+ #;
+ #
+ ];
+ [
+ "Ci\xD1\x87 Ci\xD1\x87";
+ %true;
+ "7";
+ "i\xD1\x87 Ci\xD1\x87";
+ "Ci";
+ "Ci Ci";
+ "5";
+ "\xD1\x87iC \xD1\x87iC";
+ #;
+ #;
+ #;
+ #
+ ];
+ [
+ "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82";
+ %true;
+ "13";
+ "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82";
+ "\xD0\xBF\xD1\x80";
+ "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82";
+ "5";
+ "\xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF \xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF";
+ [
+ "4"
+ ];
+ [
+ "11"
+ ];
+ [
+ "11"
+ ];
+ [
+ "4"
+ ]
+ ];
+ [
+ "6";
+ %true;
+ "1";
+ "";
+ "6";
+ "6";
+ "1";
+ "6";
+ #;
+ #;
+ #;
+ #
+ ];
+ [
+ "";
+ %true;
+ "0";
+ "";
+ "";
+ "";
+ "0";
+ "";
+ #;
+ #;
+ #;
+ #
+ ]
+ ]
+ }
+ ]
+ }
+] \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt
index bcccb2b511..4ee0b05ad2 100644
--- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt
@@ -8,66 +8,73 @@
"StructType";
[
[
- "column0";
+ "value";
[
- "DataType";
- "Utf8"
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
]
];
[
"column1";
[
- "DataType";
- "Utf8"
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
]
];
[
"column2";
[
- "DataType";
- "Utf8"
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
]
- ]
- ]
- ]
- ];
- "Data" = [
- [
- "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm";
- "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m";
- "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, "
- ]
- ]
- }
- ]
- };
- {
- "Write" = [
- {
- "Type" = [
- "ListType";
- [
- "StructType";
- [
+ ];
[
- "column0";
+ "column3";
[
- "DataType";
- "Utf8"
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
]
];
[
- "column1";
+ "column4";
[
- "DataType";
- "Utf8"
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
]
];
[
- "column2";
+ "column5";
[
- "DataType";
- "Utf8"
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ];
+ [
+ "column6";
+ [
+ "OptionalType";
+ [
+ "DataType";
+ "Utf8"
+ ]
]
]
]
@@ -75,9 +82,50 @@
];
"Data" = [
[
- "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k";
- "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m";
- "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r"
+ [
+ "l\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm\xC3\xA4\xC3\x9Fig"
+ ];
+ [
+ "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm"
+ ];
+ [
+ "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"
+ ];
+ [
+ "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, "
+ ];
+ [
+ "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k"
+ ];
+ [
+ "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"
+ ];
+ [
+ "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r"
+ ]
+ ];
+ [
+ [
+ "l\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm\xC3\xA4\xC3\x9Fig"
+ ];
+ [
+ "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm"
+ ];
+ [
+ "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"
+ ];
+ [
+ "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, "
+ ];
+ [
+ "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k"
+ ];
+ [
+ "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"
+ ];
+ [
+ "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r"
+ ]
]
]
}
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt
index 11bcb15a2f..4004c75199 100644
--- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt
@@ -8,63 +8,45 @@
"StructType";
[
[
- "column0";
+ "value";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"all";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"first";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"last";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"first2";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"last2";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
]
]
@@ -72,104 +54,44 @@
];
"Data" = [
[
- [
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
- ]
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2";
+ "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2";
+ "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
];
[
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"
- ]
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"
];
[
- [
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD0\xB2\xD1\x8B\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2"
- ];
- [
- "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
- ];
- [
- "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
- ]
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB2\xD1\x8B\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2";
+ "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2";
+ "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
];
[
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x8B"
- ]
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x8B"
];
[
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ]
+ "";
+ "";
+ "";
+ "";
+ "";
+ ""
]
]
}
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt
index 7390dbdbc3..bdb61e7f5c 100644
--- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt
@@ -8,83 +8,59 @@
"StructType";
[
[
- "column0";
+ "value";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"all";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"first";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"last";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"first2";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"last2";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"first3";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"last3";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
]
]
@@ -92,134 +68,54 @@
];
"Data" = [
[
- [
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD1\x8B\xD0\xB2z\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
- ];
- [
- "\xD1\x8B\xD0\xB2zzz\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz"
- ]
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2z\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z";
+ "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2";
+ "\xD1\x8B\xD0\xB2zzz\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz"
];
[
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fz\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0z\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fzzz\xD0\xB0\xD1\x87\xD1\x8B"
- ];
- [
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0zzz\xD1\x87\xD1\x8B"
- ]
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fz\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0z\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fzzz\xD0\xB0\xD1\x87\xD1\x8B";
+ "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0zzz\xD1\x87\xD1\x8B"
];
[
- [
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "z\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z"
- ];
- [
- "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"
- ];
- [
- "zzz\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"
- ];
- [
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz"
- ]
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "z\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z";
+ "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2";
+ "zzz\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
+ "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz"
];
[
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2z\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0z\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2zzz\xD0\xB0\xD1\x84\xD1\x8B"
- ];
- [
- "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x84\xD1\x8B"
- ]
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2z\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0z\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2zzz\xD0\xB0\xD1\x84\xD1\x8B";
+ "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x84\xD1\x8B"
];
[
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ]
+ "";
+ "";
+ "";
+ "";
+ "";
+ "";
+ "";
+ ""
]
]
}
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt
index 613b639ed0..22df398114 100644
--- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt
@@ -8,7 +8,7 @@
"StructType";
[
[
- "column0";
+ "value";
[
"DataType";
"Utf8"
@@ -20,53 +20,33 @@
"DataType";
"Utf8"
]
- ];
- [
- "column2";
- [
- "DataType";
- "Utf8"
- ]
- ];
- [
- "column3";
- [
- "DataType";
- "Utf8"
- ]
- ];
- [
- "column4";
- [
- "DataType";
- "Utf8"
- ]
- ];
- [
- "column5";
- [
- "DataType";
- "Utf8"
- ]
- ];
- [
- "column6";
- [
- "DataType";
- "Utf8"
- ]
]
]
]
];
"Data" = [
[
- "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
- "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B";
- "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0";
- "\xD0\xB0\xD0\xB0\xD0\xB2 \xD1\x8B\xD0\xB0 \xD1\x8B\xD0\xB2\xD0\xB0 \xD1\x8B\xD0\xB2\xD0\xB0";
- "\xD1\x8B\xD0\xB2\xD0\xB0";
- "\xD0\xB2\xD0\xB0\xD0\xBE\xD0\xB0\xD0\xBE";
+ "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0 \xD0\xB1\xD0\xB5\xD0\xB7 \xD0\xB2\xD0\xBD\xD0\xB5\xD1\x88\xD0\xBD\xD0\xB8\xD1\x85 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2";
+ "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0 \xD0\xB1\xD0\xB5\xD0\xB7 \xD0\xB2\xD0\xBD\xD0\xB5\xD1\x88\xD0\xBD\xD0\xB8\xD1\x85 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2"
+ ];
+ [
+ " \xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBB\xD0\xB5\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB";
+ "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBB\xD0\xB5\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB"
+ ];
+ [
+ "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB ";
+ "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB"
+ ];
+ [
+ "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0_\xD1\x81\xD0\xBE\xD0\xB2\xD1\x81\xD0\xB5\xD0\xBC_\xD0\xB1\xD0\xB5\xD0\xB7_\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2";
+ "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0_\xD1\x81\xD0\xBE\xD0\xB2\xD1\x81\xD0\xB5\xD0\xBC_\xD0\xB1\xD0\xB5\xD0\xB7_\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2"
+ ];
+ [
+ "\xE2\x80\x89\xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4+\xD0\xBF\xD0\xB5\xD1\x80\xD0\xB5\xD0\xB2\xD0\xBE\xD0\xB4 \xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB8\n";
+ "\xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4+\xD0\xBF\xD0\xB5\xD1\x80\xD0\xB5\xD0\xB2\xD0\xBE\xD0\xB4 \xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB8"
+ ];
+ [
+ "";
""
]
]
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_UnicodeCodePoint_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_UnicodeCodePoint_/results.txt
new file mode 100644
index 0000000000..cab1fc79ef
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_UnicodeCodePoint_/results.txt
@@ -0,0 +1,120 @@
+[
+ {
+ "Write" = [
+ {
+ "Type" = [
+ "ListType";
+ [
+ "StructType";
+ [
+ [
+ "code_point_list";
+ [
+ "ListType";
+ [
+ "DataType";
+ "Uint32"
+ ]
+ ]
+ ];
+ [
+ "from_code_point_list";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ];
+ [
+ "from_lazy_code_point_list";
+ [
+ "DataType";
+ "Utf8"
+ ]
+ ]
+ ]
+ ]
+ ];
+ "Data" = [
+ [
+ [
+ "69";
+ "121";
+ "108";
+ "252";
+ "108"
+ ];
+ "Eyl\xC3\xBCl";
+ "Eyl\xC3\xBCl"
+ ];
+ [
+ [
+ "1078";
+ "1085";
+ "1110";
+ "1118";
+ "1085";
+ "1103"
+ ];
+ "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F";
+ "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"
+ ];
+ [
+ [
+ "250";
+ "110";
+ "111";
+ "114";
+ "97"
+ ];
+ "\xC3\xBAnora";
+ "\xC3\xBAnora"
+ ];
+ [
+ [
+ "67";
+ "105";
+ "1095";
+ "32";
+ "67";
+ "105";
+ "1095"
+ ];
+ "Ci\xD1\x87 Ci\xD1\x87";
+ "Ci\xD1\x87 Ci\xD1\x87"
+ ];
+ [
+ [
+ "1087";
+ "1088";
+ "1080";
+ "1074";
+ "1077";
+ "1090";
+ "32";
+ "1087";
+ "1088";
+ "1080";
+ "1074";
+ "1077";
+ "1090"
+ ];
+ "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82";
+ "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"
+ ];
+ [
+ [
+ "54"
+ ];
+ "6";
+ "6"
+ ];
+ [
+ [];
+ "";
+ ""
+ ]
+ ]
+ }
+ ]
+ }
+] \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt
index 502cea3fd0..76cdb42446 100644
--- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt
+++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt
@@ -10,11 +10,8 @@
[
"value";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
@@ -27,94 +24,43 @@
[
"length";
[
- "OptionalType";
- [
- "DataType";
- "Uint64"
- ]
+ "DataType";
+ "Uint64"
]
];
[
"one_end_substring";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"two_end_substring";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"remove_all";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
"levenstein";
[
- "OptionalType";
- [
- "DataType";
- "Uint64"
- ]
- ]
- ];
- [
- "code_point_list";
- [
- "OptionalType";
- [
- "ListType";
- [
- "DataType";
- "Uint32"
- ]
- ]
- ]
- ];
- [
- "from_code_point_list";
- [
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
- ]
- ];
- [
- "from_lazy_code_point_list";
- [
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Uint64"
]
];
[
"reverse";
[
- "OptionalType";
- [
- "DataType";
- "Utf8"
- ]
+ "DataType";
+ "Utf8"
]
];
[
@@ -162,226 +108,70 @@
];
"Data" = [
[
- [
- "Eyl\xC3\xBCl"
- ];
+ "Eyl\xC3\xBCl";
%true;
- [
- "5"
- ];
- [
- "yl\xC3\xBCl"
- ];
- [
- "Ey"
- ];
- [
- "Eyl\xC3\xBCl"
- ];
- [
- "5"
- ];
- [
- [
- "69";
- "121";
- "108";
- "252";
- "108"
- ]
- ];
- [
- "Eyl\xC3\xBCl"
- ];
- [
- "Eyl\xC3\xBCl"
- ];
- [
- "l\xC3\xBClyE"
- ];
+ "5";
+ "yl\xC3\xBCl";
+ "Ey";
+ "Eyl\xC3\xBCl";
+ "5";
+ "l\xC3\xBClyE";
#;
#;
#;
#
];
[
- [
- "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"
- ];
+ "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F";
%true;
- [
- "6"
- ];
- [
- "\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"
- ];
- [
- "\xD0\xB6\xD0\xBD"
- ];
- [
- "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"
- ];
- [
- "5"
- ];
- [
- [
- "1078";
- "1085";
- "1110";
- "1118";
- "1085";
- "1103"
- ]
- ];
- [
- "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"
- ];
- [
- "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"
- ];
- [
- "\xD1\x8F\xD0\xBD\xD1\x9E\xD1\x96\xD0\xBD\xD0\xB6"
- ];
+ "6";
+ "\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F";
+ "\xD0\xB6\xD0\xBD";
+ "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F";
+ "5";
+ "\xD1\x8F\xD0\xBD\xD1\x9E\xD1\x96\xD0\xBD\xD0\xB6";
#;
#;
#;
#
];
[
- [
- "\xC3\xBAnora"
- ];
+ "\xC3\xBAnora";
%true;
- [
- "5"
- ];
- [
- "nora"
- ];
- [
- "\xC3\xBAn"
- ];
- [
- "\xC3\xBAnoa"
- ];
- [
- "5"
- ];
- [
- [
- "250";
- "110";
- "111";
- "114";
- "97"
- ]
- ];
- [
- "\xC3\xBAnora"
- ];
- [
- "\xC3\xBAnora"
- ];
- [
- "aron\xC3\xBA"
- ];
+ "5";
+ "nora";
+ "\xC3\xBAn";
+ "\xC3\xBAnoa";
+ "5";
+ "aron\xC3\xBA";
#;
#;
#;
#
];
[
- [
- "Ci\xD1\x87 Ci\xD1\x87"
- ];
+ "Ci\xD1\x87 Ci\xD1\x87";
%true;
- [
- "7"
- ];
- [
- "i\xD1\x87 Ci\xD1\x87"
- ];
- [
- "Ci"
- ];
- [
- "Ci Ci"
- ];
- [
- "5"
- ];
- [
- [
- "67";
- "105";
- "1095";
- "32";
- "67";
- "105";
- "1095"
- ]
- ];
- [
- "Ci\xD1\x87 Ci\xD1\x87"
- ];
- [
- "Ci\xD1\x87 Ci\xD1\x87"
- ];
- [
- "\xD1\x87iC \xD1\x87iC"
- ];
+ "7";
+ "i\xD1\x87 Ci\xD1\x87";
+ "Ci";
+ "Ci Ci";
+ "5";
+ "\xD1\x87iC \xD1\x87iC";
#;
#;
#;
#
];
[
- [
- "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"
- ];
+ "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82";
%true;
- [
- "13"
- ];
- [
- "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"
- ];
- [
- "\xD0\xBF\xD1\x80"
- ];
- [
- "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"
- ];
- [
- "5"
- ];
- [
- [
- "1087";
- "1088";
- "1080";
- "1074";
- "1077";
- "1090";
- "32";
- "1087";
- "1088";
- "1080";
- "1074";
- "1077";
- "1090"
- ]
- ];
- [
- "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"
- ];
- [
- "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"
- ];
- [
- "\xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF \xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF"
- ];
+ "13";
+ "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82";
+ "\xD0\xBF\xD1\x80";
+ "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82";
+ "5";
+ "\xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF \xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF";
[
"4"
];
@@ -396,76 +186,28 @@
]
];
[
- [
- "6"
- ];
+ "6";
%true;
- [
- "1"
- ];
- [
- ""
- ];
- [
- "6"
- ];
- [
- "6"
- ];
- [
- "1"
- ];
- [
- [
- "54"
- ]
- ];
- [
- "6"
- ];
- [
- "6"
- ];
- [
- "6"
- ];
+ "1";
+ "";
+ "6";
+ "6";
+ "1";
+ "6";
#;
#;
#;
#
];
[
- [
- ""
- ];
+ "";
%true;
- [
- "0"
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- "0"
- ];
- [
- []
- ];
- [
- ""
- ];
- [
- ""
- ];
- [
- ""
- ];
+ "0";
+ "";
+ "";
+ "";
+ "0";
+ "";
#;
#;
#;
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in
new file mode 100644
index 0000000000..c40336b0e2
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in
@@ -0,0 +1,2 @@
+{"key"="1";"value"="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"};
+{"key"="2";"value"="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in.attr
new file mode 100644
index 0000000000..ea891bb344
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["OptionalType";["DataType";"Utf8"]]];
+ ["value";["OptionalType";["DataType";"Utf8"]]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.sql
new file mode 100644
index 0000000000..0954e77c94
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.sql
@@ -0,0 +1,12 @@
+
+pragma UseBlocks;
+
+SELECT
+ value as value,
+ Unicode::Substring(value, Unicode::Find(value, "ä"u), Unicode::RFind(value, "ä"u) - Unicode::Find(value, "ä"u)),
+ Unicode::Substring(value, Unicode::Find(value, "ö"u), Unicode::RFind(value, "ö"u) - Unicode::Find(value, "ö"u)),
+ Unicode::Substring(value, Unicode::Find(value, "ü"u), Unicode::RFind(value, "ü"u) - Unicode::Find(value, "ü"u)),
+ Unicode::Substring(value, Unicode::Find(value, "ä"u, 30ul), Unicode::RFind(value, "ä"u, 123ul) - Unicode::Find(value, "ä"u, 30ul)),
+ Unicode::Substring(value, Unicode::Find(value, "ö"u, 9ul), Unicode::RFind(value, "ö"u, 103ul) - Unicode::Find(value, "ö"u, 9ul)),
+ Unicode::Substring(value, Unicode::Find(value, "ü"u, 45ul), Unicode::RFind(value, "ü"u, 83ul) - Unicode::Find(value, "ü"u, 45ul))
+from Input
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in
new file mode 100644
index 0000000000..95262ac2b9
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in
@@ -0,0 +1,5 @@
+{"key"="1";"value"="ываыва"};
+{"key"="2";"value"="ячсячсяаачы"};
+{"key"="3";"value"="аавыаываыва"};
+{"key"="4";"value"="gd2цй3ываафы"};
+{"key"="5";"value"=""};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in.attr
new file mode 100644
index 0000000000..d5e5b2ca48
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.sql
new file mode 100644
index 0000000000..04a8593148
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.sql
@@ -0,0 +1,12 @@
+/* syntax version 1 */
+
+pragma UseBlocks;
+
+SELECT
+ value as value,
+ Unicode::RemoveAll(value, "фа"u) AS all,
+ Unicode::RemoveFirst(value, "а"u) AS first,
+ Unicode::RemoveLast(value, "а"u) AS last,
+ Unicode::RemoveFirst(value, "фа"u) AS first2,
+ Unicode::RemoveLast(value, "фа"u) AS last2
+FROM Input;
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.in.attr
new file mode 100644
index 0000000000..d5e5b2ca48
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.sql
new file mode 100644
index 0000000000..c50f01c184
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.sql
@@ -0,0 +1,14 @@
+/* syntax version 1 */
+
+pragma UseBlocks;
+
+SELECT
+ value,
+ Unicode::ReplaceAll(value, Utf8("аф"), Utf8("zzz")) AS all,
+ Unicode::ReplaceFirst(value, Utf8("а"), Utf8("z")) AS first,
+ Unicode::ReplaceLast(value, Utf8("а"), Utf8("z")) AS last,
+ Unicode::ReplaceFirst(value, Utf8("а"), Utf8("")) AS first2,
+ Unicode::ReplaceLast(value, Utf8("а"), Utf8("")) AS last2,
+ Unicode::ReplaceFirst(value, Utf8("а"), Utf8("zzz")) AS first3,
+ Unicode::ReplaceLast(value, Utf8("а"), Utf8("zzz")) AS last3
+FROM Input \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in
new file mode 100644
index 0000000000..d8e23353ed
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in
@@ -0,0 +1,6 @@
+{"key"="1";"value"="строка без внешних пробелов"};
+{"key"="2";"value"=" только левый пробел"};
+{"key"="3";"value"="только правый пробел "};
+{"key"="4";"value"="строка_совсем_без_пробелов"};
+{"key"="5";"value"="\u2009юникод+перевод строки\n"};
+{"key"="6";"value"=""};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in.attr
new file mode 100644
index 0000000000..d5e5b2ca48
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.sql
new file mode 100644
index 0000000000..04e1b04764
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.sql
@@ -0,0 +1,8 @@
+/* syntax version 1 */
+
+pragma UseBlocks;
+
+SELECT
+ value as value,
+ Unicode::Strip(value)
+From Input
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in
new file mode 100644
index 0000000000..d9c36c855a
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in
@@ -0,0 +1,7 @@
+{"key"="";"value"="Eyl\xC3\xBCl"};
+{"key"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"};
+{"key"="";"value"="\xC3\xBAnora"};
+{"key"="";"value"="Ci\xD1\x87 Ci\xD1\x87"};
+{"key"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"};
+{"key"="";"value"="6"};
+{"key"="";"value"=""};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in.attr
new file mode 100644
index 0000000000..5f1b009fbf
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.sql
new file mode 100644
index 0000000000..3ab0ffc96f
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.sql
@@ -0,0 +1,18 @@
+/* syntax version 1 */
+
+pragma UseBlocks;
+
+SELECT
+ value AS value,
+ Unicode::IsUtf(value) AS is,
+ Unicode::GetLength(value) AS length,
+ Unicode::Substring(value, 1) AS one_end_substring,
+ Unicode::Substring(value, 0, 2) AS two_end_substring,
+ Unicode::RemoveAll(value, "\xD1\x87пr") AS remove_all,
+ Unicode::LevensteinDistance(value, value || Unicode::Substring(value, 0, 5)) AS levenstein,
+ Unicode::Reverse(value) AS reverse,
+ Unicode::Find(value, "ет"u) AS find,
+ Unicode::RFind(value, "ет"u) AS rfind,
+ Unicode::Find(value, "ет"u, 7ul) AS find_from,
+ Unicode::RFind(value, "ет"u, 7ul) AS rfind_from
+FROM Input
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Find.in b/yql/essentials/udfs/common/unicode_base/test/cases/Find.in
new file mode 100644
index 0000000000..c40336b0e2
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Find.in
@@ -0,0 +1,2 @@
+{"key"="1";"value"="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"};
+{"key"="2";"value"="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Find.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Find.in.attr
new file mode 100644
index 0000000000..ea891bb344
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Find.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["OptionalType";["DataType";"Utf8"]]];
+ ["value";["OptionalType";["DataType";"Utf8"]]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Find.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Find.sql
index 9a9a58752e..1515be76c6 100644
--- a/yql/essentials/udfs/common/unicode_base/test/cases/Find.sql
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Find.sql
@@ -1,13 +1,9 @@
-$text ="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"u;
-
SELECT
- Unicode::Substring($text, Unicode::Find($text, "ä"u), Unicode::RFind($text, "ä"u) - Unicode::Find($text, "ä"u)),
- Unicode::Substring($text, Unicode::Find($text, "ö"u), Unicode::RFind($text, "ö"u) - Unicode::Find($text, "ö"u)),
- Unicode::Substring($text, Unicode::Find($text, "ü"u), Unicode::RFind($text, "ü"u) - Unicode::Find($text, "ü"u));
-
-
-SELECT
- Unicode::Substring($text, Unicode::Find($text, "ä"u, 30ul), Unicode::RFind($text, "ä"u, 123ul) - Unicode::Find($text, "ä"u, 30ul)),
- Unicode::Substring($text, Unicode::Find($text, "ö"u, 9ul), Unicode::RFind($text, "ö"u, 103ul) - Unicode::Find($text, "ö"u, 9ul)),
- Unicode::Substring($text, Unicode::Find($text, "ü"u, 45ul), Unicode::RFind($text, "ü"u, 83ul) - Unicode::Find($text, "ü"u, 45ul));
-
+ value as value,
+ Unicode::Substring(value, Unicode::Find(value, "ä"u), Unicode::RFind(value, "ä"u) - Unicode::Find(value, "ä"u)),
+ Unicode::Substring(value, Unicode::Find(value, "ö"u), Unicode::RFind(value, "ö"u) - Unicode::Find(value, "ö"u)),
+ Unicode::Substring(value, Unicode::Find(value, "ü"u), Unicode::RFind(value, "ü"u) - Unicode::Find(value, "ü"u)),
+ Unicode::Substring(value, Unicode::Find(value, "ä"u, 30ul), Unicode::RFind(value, "ä"u, 123ul) - Unicode::Find(value, "ä"u, 30ul)),
+ Unicode::Substring(value, Unicode::Find(value, "ö"u, 9ul), Unicode::RFind(value, "ö"u, 103ul) - Unicode::Find(value, "ö"u, 9ul)),
+ Unicode::Substring(value, Unicode::Find(value, "ü"u, 45ul), Unicode::RFind(value, "ü"u, 83ul) - Unicode::Find(value, "ü"u, 45ul))
+from Input
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in
new file mode 100644
index 0000000000..95262ac2b9
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in
@@ -0,0 +1,5 @@
+{"key"="1";"value"="ываыва"};
+{"key"="2";"value"="ячсячсяаачы"};
+{"key"="3";"value"="аавыаываыва"};
+{"key"="4";"value"="gd2цй3ываафы"};
+{"key"="5";"value"=""};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in.attr
new file mode 100644
index 0000000000..d5e5b2ca48
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql
index ee96037f79..eae1d678a3 100644
--- a/yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql
@@ -1,9 +1,9 @@
/* syntax version 1 */
SELECT
- CAST(value AS Utf8),
- Unicode::RemoveAll(CAST(value AS Utf8), Utf8("фа")) AS all,
- Unicode::RemoveFirst(CAST(value AS Utf8), Utf8("а")) AS first,
- Unicode::RemoveLast(CAST(value AS Utf8), Utf8("а")) AS last,
- Unicode::RemoveFirst(CAST(value AS Utf8), Utf8("фа")) AS first2,
- Unicode::RemoveLast(CAST(value AS Utf8), Utf8("фа")) AS last2
+ value as value,
+ Unicode::RemoveAll(value, "фа"u) AS all,
+ Unicode::RemoveFirst(value, "а"u) AS first,
+ Unicode::RemoveLast(value, "а"u) AS last,
+ Unicode::RemoveFirst(value, "фа"u) AS first2,
+ Unicode::RemoveLast(value, "фа"u) AS last2
FROM Input;
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Replace.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Replace.in.attr
new file mode 100644
index 0000000000..d5e5b2ca48
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Replace.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql
index d623984413..9f875627ed 100644
--- a/yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql
@@ -1,11 +1,11 @@
/* syntax version 1 */
SELECT
- CAST(value AS Utf8),
- Unicode::ReplaceAll(CAST(value AS Utf8), Utf8("аф"), Utf8("zzz")) AS all,
- Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("z")) AS first,
- Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("z")) AS last,
- Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("")) AS first2,
- Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("")) AS last2,
- Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("zzz")) AS first3,
- Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("zzz")) AS last3
-FROM Input;
+ value,
+ Unicode::ReplaceAll(value, Utf8("аф"), Utf8("zzz")) AS all,
+ Unicode::ReplaceFirst(value, Utf8("а"), Utf8("z")) AS first,
+ Unicode::ReplaceLast(value, Utf8("а"), Utf8("z")) AS last,
+ Unicode::ReplaceFirst(value, Utf8("а"), Utf8("")) AS first2,
+ Unicode::ReplaceLast(value, Utf8("а"), Utf8("")) AS last2,
+ Unicode::ReplaceFirst(value, Utf8("а"), Utf8("zzz")) AS first3,
+ Unicode::ReplaceLast(value, Utf8("а"), Utf8("zzz")) AS last3
+FROM Input \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in
new file mode 100644
index 0000000000..d8e23353ed
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in
@@ -0,0 +1,6 @@
+{"key"="1";"value"="строка без внешних пробелов"};
+{"key"="2";"value"=" только левый пробел"};
+{"key"="3";"value"="только правый пробел "};
+{"key"="4";"value"="строка_совсем_без_пробелов"};
+{"key"="5";"value"="\u2009юникод+перевод строки\n"};
+{"key"="6";"value"=""};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in.attr
new file mode 100644
index 0000000000..d5e5b2ca48
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql
index 45bde163e0..48f9498b8e 100644
--- a/yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql
@@ -1,9 +1,5 @@
/* syntax version 1 */
SELECT
- Unicode::Strip("ываыва"u),
- Unicode::Strip(" ячсячсяаачы"u),
- Unicode::Strip("аавыаываыва "u),
- Unicode::Strip("аав ыа ыва ыва "u),
- Unicode::Strip("\u2009ыва\n"u),
- Unicode::Strip("\u200aваоао\u2002"u),
- Unicode::Strip(""u)
+ value as value,
+ Unicode::Strip(value)
+From Input
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in
index 55f0307e35..d9c36c855a 100644
--- a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in
@@ -1,7 +1,7 @@
-{"key"="";"subkey"="";"value"="Eyl\xC3\xBCl"};
-{"key"="";"subkey"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"};
-{"key"="";"subkey"="";"value"="\xC3\xBAnora"};
-{"key"="";"subkey"="";"value"="Ci\xD1\x87 Ci\xD1\x87"};
-{"key"="";"subkey"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"};
-{"key"="";"subkey"="";"value"="6"};
-{"key"="";"subkey"="";"value"=""};
+{"key"="";"value"="Eyl\xC3\xBCl"};
+{"key"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"};
+{"key"="";"value"="\xC3\xBAnora"};
+{"key"="";"value"="Ci\xD1\x87 Ci\xD1\x87"};
+{"key"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"};
+{"key"="";"value"="6"};
+{"key"="";"value"=""};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in.attr
new file mode 100644
index 0000000000..5f1b009fbf
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql
index cdff12f352..6cbaededb6 100644
--- a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql
@@ -7,12 +7,9 @@ SELECT
Unicode::Substring(value, 0, 2) AS two_end_substring,
Unicode::RemoveAll(value, "\xD1\x87пr") AS remove_all,
Unicode::LevensteinDistance(value, value || Unicode::Substring(value, 0, 5)) AS levenstein,
- Unicode::ToCodePointList(value) AS code_point_list,
- Unicode::FromCodePointList(Unicode::ToCodePointList(value)) AS from_code_point_list,
- Unicode::FromCodePointList(YQL::LazyList(Unicode::ToCodePointList(value))) AS from_lazy_code_point_list,
Unicode::Reverse(value) AS reverse,
Unicode::Find(value, "ет"u) AS find,
Unicode::RFind(value, "ет"u) AS rfind,
Unicode::Find(value, "ет"u, 7ul) AS find_from,
Unicode::RFind(value, "ет"u, 7ul) AS rfind_from
-FROM (SELECT CAST(value AS Utf8) AS value FROM Input);
+FROM Input
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in
new file mode 100644
index 0000000000..d9c36c855a
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in
@@ -0,0 +1,7 @@
+{"key"="";"value"="Eyl\xC3\xBCl"};
+{"key"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"};
+{"key"="";"value"="\xC3\xBAnora"};
+{"key"="";"value"="Ci\xD1\x87 Ci\xD1\x87"};
+{"key"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"};
+{"key"="";"value"="6"};
+{"key"="";"value"=""};
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in.attr
new file mode 100644
index 0000000000..d5e5b2ca48
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in.attr
@@ -0,0 +1,8 @@
+{
+ "_yql_row_spec"={
+ "Type"=["StructType";[
+ ["key";["DataType";"Utf8"]];
+ ["value";["DataType";"Utf8"]]
+ ]];
+ }
+}
diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.sql b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.sql
new file mode 100644
index 0000000000..cc26378317
--- /dev/null
+++ b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.sql
@@ -0,0 +1,6 @@
+/* syntax version 1 */
+SELECT
+ Unicode::ToCodePointList(value) AS code_point_list,
+ Unicode::FromCodePointList(Unicode::ToCodePointList(value)) AS from_code_point_list,
+ Unicode::FromCodePointList(YQL::LazyList(Unicode::ToCodePointList(value))) AS from_lazy_code_point_list,
+FROM Input
diff --git a/yt/cpp/mapreduce/client/operation.cpp b/yt/cpp/mapreduce/client/operation.cpp
index c8cbe5b644..76a55b436f 100644
--- a/yt/cpp/mapreduce/client/operation.cpp
+++ b/yt/cpp/mapreduce/client/operation.cpp
@@ -879,6 +879,12 @@ void BuildCommonOperationPart(
if (baseSpec.MaxFailedJobCount_.Defined()) {
(*specNode)["max_failed_job_count"] = *baseSpec.MaxFailedJobCount_;
}
+ if (baseSpec.Description_.Defined()) {
+ (*specNode)["description"] = *baseSpec.Description_;
+ }
+ if (baseSpec.Annotations_.Defined()) {
+ (*specNode)["annotations"] = *baseSpec.Annotations_;
+ }
}
template <typename TSpec>
diff --git a/yt/cpp/mapreduce/interface/operation.h b/yt/cpp/mapreduce/interface/operation.h
index 218ead0572..c1beb5375d 100644
--- a/yt/cpp/mapreduce/interface/operation.h
+++ b/yt/cpp/mapreduce/interface/operation.h
@@ -542,6 +542,12 @@ struct TOperationSpecBase
/// How many jobs can fail before operation is failed.
FLUENT_FIELD_OPTION(ui64, MaxFailedJobCount);
+
+ // Arbitrary structured information related to the operation.
+ FLUENT_FIELD_OPTION(TNode, Annotations);
+
+ // Similar to Annotations, shown on the operation page. Recommends concise, human-readable entries to prevent clutter.
+ FLUENT_FIELD_OPTION(TNode, Description);
};
///
diff --git a/yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp b/yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp
index bc307c3178..7916821ca4 100644
--- a/yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp
+++ b/yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp
@@ -69,7 +69,11 @@ void TRecordsRange::Fill(const TExprNode& settingsNode) {
if (settingName != TStringBuf("take") && settingName != TStringBuf("skip")) {
continue;
}
- YQL_ENSURE(setting->Child(1)->IsCallable("Uint64"));
+ if (!setting->Child(1)->IsCallable("Uint64")) {
+ Offset.Clear();
+ Limit.Clear();
+ return;
+ }
if (!UpdateRecordsRange(*this, settingName, NYql::FromString<ui64>(*setting->Child(1)->Child(0), NUdf::EDataSlot::Uint64))) {
break;
}
diff --git a/yt/yql/providers/yt/lib/res_pull/table_limiter.cpp b/yt/yql/providers/yt/lib/res_pull/table_limiter.cpp
index 98731da58f..ddd4781ed6 100644
--- a/yt/yql/providers/yt/lib/res_pull/table_limiter.cpp
+++ b/yt/yql/providers/yt/lib/res_pull/table_limiter.cpp
@@ -8,11 +8,16 @@ namespace NYql {
TTableLimiter::TTableLimiter(const TRecordsRange& range)
: Start(range.Offset.GetOrElse(0ULL))
- , End(range.Limit.Defined() ? Start + *range.Limit : Max())
, Current(0ULL)
, TableStart(0ULL)
, TableEnd(Max())
{
+ const auto limit = range.Limit.GetOrElse(Max());
+ if (limit > Max<ui64>() - Start) {
+ End = Max();
+ } else {
+ End = Start + limit;
+ }
}
bool TTableLimiter::NextTable(ui64 recordCount) {
diff --git a/yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp b/yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp
index 0c8c9fdf6c..b3233e37f1 100644
--- a/yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp
@@ -279,31 +279,41 @@ private:
.Build()
.Done();
- TExprNode::TPtr limit;
- if (const auto& limitNode = NYql::GetSetting(sort.Settings().Ref(), EYtSettingType::Limit)) {
- limit = GetLimitExpr(limitNode, ctx);
- }
-
+ TExprNode::TPtr work;
auto [direct, selector] = GetOutputSortSettings(sort, ctx);
- auto work = direct && selector ?
- limit ?
- Build<TCoTopSort>(ctx, sort.Pos())
+ if (direct && selector) {
+ // Don't use runtime limit for TopSort - it may have max<ui64>() value, which cause TopSort to fail
+ TMaybe<ui64> limit = GetLimit(sort.Settings().Ref());
+ work = limit
+ ? Build<TCoTopSort>(ctx, sort.Pos())
.Input(input)
- .Count(std::move(limit))
+ .Count<TCoUint64>()
+ .Literal()
+ .Value(ToString(*limit), TNodeFlags::Default)
+ .Build()
+ .Build()
.SortDirections(std::move(direct))
.KeySelectorLambda(std::move(selector))
- .Done().Ptr():
- Build<TCoSort>(ctx, sort.Pos())
+ .Done().Ptr()
+ : Build<TCoSort>(ctx, sort.Pos())
.Input(input)
.SortDirections(std::move(direct))
.KeySelectorLambda(std::move(selector))
- .Done().Ptr():
- limit ?
- Build<TCoTake>(ctx, sort.Pos())
+ .Done().Ptr()
+ ;
+ } else {
+ TExprNode::TPtr limit;
+ if (const auto& limitNode = NYql::GetSetting(sort.Settings().Ref(), EYtSettingType::Limit)) {
+ limit = GetLimitExpr(limitNode, ctx);
+ }
+
+ work = limit
+ ? Build<TCoTake>(ctx, sort.Pos())
.Input(input)
.Count(std::move(limit))
- .Done().Ptr():
- input.Ptr();
+ .Done().Ptr()
+ : input.Ptr();
+ }
auto settings = NYql::AddSetting(sort.Settings().Ref(), EYtSettingType::NoDq, {}, ctx);
auto operation = ctx.ChangeChild(sort.Ref(), TYtTransientOpBase::idx_Settings, std::move(settings));
diff --git a/yt/yql/providers/yt/provider/yql_yt_helpers.cpp b/yt/yql/providers/yt/provider/yql_yt_helpers.cpp
index 97b9fdeda9..d8b1f20823 100644
--- a/yt/yql/providers/yt/provider/yql_yt_helpers.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_helpers.cpp
@@ -905,7 +905,30 @@ TExprNode::TPtr GetLimitExpr(const TExprNode::TPtr& limitSetting, TExprContext&
}
if (skip) {
- limitValues.push_back(ctx.NewCallable(child->Pos(), "+", { take, skip }));
+ auto uintMax = ctx.Builder(child->Pos())
+ .Callable("Uint64")
+ .Atom(0, ToString(Max<ui64>()), TNodeFlags::Default)
+ .Seal()
+ .Build();
+ limitValues.push_back(
+ ctx.Builder(child->Pos())
+ .Callable("If")
+ .Callable(0, ">")
+ .Add(0, take)
+ .Callable(1, "-")
+ .Add(0, uintMax)
+ .Add(1, skip)
+ .Seal()
+ .Seal()
+ .Add(1, uintMax)
+ .Callable(2, "+")
+ .Add(0, take)
+ .Add(1, skip)
+ .Seal()
+ .Seal()
+ .Build()
+ );
+
} else {
limitValues.push_back(take);
}
diff --git a/yt/yql/providers/yt/provider/yql_yt_optimize.cpp b/yt/yql/providers/yt/provider/yql_yt_optimize.cpp
index 0137b343eb..cd0b5e2ade 100644
--- a/yt/yql/providers/yt/provider/yql_yt_optimize.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_optimize.cpp
@@ -73,7 +73,7 @@ TMaybeNode<TYtSection> MaterializeSectionIfRequired(TExprBase world, TYtSection
.Paths()
.Add(path)
.Build()
- .Settings(NYql::RemoveSetting(section.Settings().Ref(), EYtSettingType::Sample, ctx))
+ .Settings(NYql::RemoveSettings(section.Settings().Ref(), EYtSettingType::Sample | EYtSettingType::SysColumns, ctx))
.Done();
}
@@ -89,7 +89,7 @@ TMaybeNode<TYtSection> UpdateSectionWithRange(TExprBase world, TYtSection sectio
TVector<TYtPath> skippedPaths;
if (auto limiter = TTableLimiter(range)) {
if (auto materialized = MaterializeSectionIfRequired(world, section, dataSink, outRowSpec, keepSortness,
- {NYql::KeepOnlySettings(section.Settings().Ref(), EYtSettingType::Take | EYtSettingType::Skip | EYtSettingType::SysColumns, ctx)}, state, ctx))
+ {NYql::KeepOnlySettings(section.Settings().Ref(), EYtSettingType::Take | EYtSettingType::Skip, ctx)}, state, ctx))
{
if (!allowMaterialize || state->Types->EvaluationInProgress) {
// Keep section as is
diff --git a/yt/yql/tests/sql/suites/limit/dynamic_limit_offset_overflow.sql b/yt/yql/tests/sql/suites/limit/dynamic_limit_offset_overflow.sql
new file mode 100644
index 0000000000..5452aceb1c
--- /dev/null
+++ b/yt/yql/tests/sql/suites/limit/dynamic_limit_offset_overflow.sql
@@ -0,0 +1,14 @@
+-- YQL-19579
+-- Check that offset + limit don't overflow max uin64
+use plato;
+
+$limit = -1;
+$offset = 2;
+$limit = if($limit >= 0, cast($limit as uint64));
+$offset = if($offset >= 0, cast($offset as uint64));
+
+$i = select distinct key from Input;
+
+select * from $i order by key
+limit $limit offset $offset;
+
diff --git a/yt/yql/tests/sql/suites/select/sample_limit_recordindex.cfg b/yt/yql/tests/sql/suites/select/sample_limit_recordindex.cfg
new file mode 100644
index 0000000000..6c06cba116
--- /dev/null
+++ b/yt/yql/tests/sql/suites/select/sample_limit_recordindex.cfg
@@ -0,0 +1,2 @@
+in Input input1100.txt
+
diff --git a/yt/yql/tests/sql/suites/select/sample_limit_recordindex.sql b/yt/yql/tests/sql/suites/select/sample_limit_recordindex.sql
new file mode 100644
index 0000000000..220fbfa060
--- /dev/null
+++ b/yt/yql/tests/sql/suites/select/sample_limit_recordindex.sql
@@ -0,0 +1,12 @@
+/* custom check: len(yt_res_yson[0][b'Write'][0][b'Data']) <= 5 */
+USE plato;
+
+SELECT
+ key,
+ subkey,
+ TableRecordIndex() AS index
+FROM
+ Input
+SAMPLE 1.0 / 5
+LIMIT 5
+;
diff --git a/yt/yt/client/kafka/requests.cpp b/yt/yt/client/kafka/requests.cpp
index e5ac8928f8..f81e97040d 100644
--- a/yt/yt/client/kafka/requests.cpp
+++ b/yt/yt/client/kafka/requests.cpp
@@ -601,8 +601,10 @@ void TRspFetch::Serialize(IKafkaProtocolWriter* writer, int apiVersion) const
////////////////////////////////////////////////////////////////////////////////
-void TReqSaslHandshake::Deserialize(IKafkaProtocolReader* reader, int /*apiVersion*/)
+void TReqSaslHandshake::Deserialize(IKafkaProtocolReader* reader, int apiVersion)
{
+ ApiVersion = apiVersion;
+
Mechanism = reader->ReadString();
}
diff --git a/yt/yt/client/kafka/requests.h b/yt/yt/client/kafka/requests.h
index e8c4342354..04435ffcaf 100644
--- a/yt/yt/client/kafka/requests.h
+++ b/yt/yt/client/kafka/requests.h
@@ -120,6 +120,13 @@ struct TRecord
////////////////////////////////////////////////////////////////////////////////
+struct TReqBase
+{
+ int ApiVersion = 0;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+
struct TReqApiVersions
{
static constexpr ERequestType RequestType = ERequestType::ApiVersions;
@@ -504,6 +511,7 @@ struct TRspFetch
////////////////////////////////////////////////////////////////////////////////
struct TReqSaslHandshake
+ : public TReqBase
{
static constexpr ERequestType RequestType = ERequestType::SaslHandshake;
diff --git a/yt/yt/core/bus/client.h b/yt/yt/core/bus/client.h
index fa12665fc2..1b9ca361f5 100644
--- a/yt/yt/core/bus/client.h
+++ b/yt/yt/core/bus/client.h
@@ -2,6 +2,8 @@
#include "public.h"
+#include <yt/yt/core/bus/tcp/public.h>
+
#include <yt/yt/core/ytree/public.h>
namespace NYT::NBus {
@@ -28,6 +30,9 @@ struct IBusClient
//! Typically used for constructing errors.
virtual const NYTree::IAttributeDictionary& GetEndpointAttributes() const = 0;
+ //! Apply new dynamic config.
+ virtual void OnDynamicConfigChanged(const NBus::TBusClientDynamicConfigPtr& config) = 0;
+
//! Creates a new bus.
/*!
* The bus will point to the address supplied during construction.
diff --git a/yt/yt/core/bus/server.h b/yt/yt/core/bus/server.h
index dd7a35bc13..d217935c36 100644
--- a/yt/yt/core/bus/server.h
+++ b/yt/yt/core/bus/server.h
@@ -2,6 +2,8 @@
#include "public.h"
+#include <yt/yt/core/bus/tcp/public.h>
+
#include <yt/yt/core/actions/future.h>
namespace NYT::NBus {
@@ -22,6 +24,12 @@ struct IBusServer
*/
virtual void Start(IMessageHandlerPtr handler) = 0;
+ //! Apply new dynamic config.
+ /*
+ * \param config New config.
+ */
+ virtual void OnDynamicConfigChanged(const NBus::TBusServerDynamicConfigPtr& config) = 0;
+
//! Asynchronously stops the listener.
/*!
* After this call the instance is no longer usable.
diff --git a/yt/yt/core/bus/tcp/client.cpp b/yt/yt/core/bus/tcp/client.cpp
index 5dd0117bee..81db62b1ab 100644
--- a/yt/yt/core/bus/tcp/client.cpp
+++ b/yt/yt/core/bus/tcp/client.cpp
@@ -160,6 +160,11 @@ public:
return *EndpointAttributes_;
}
+ void OnDynamicConfigChanged(const NBus::TBusClientDynamicConfigPtr& config) override
+ {
+ DynamicConfig_.Store(config);
+ }
+
IBusPtr CreateBus(IMessageHandlerPtr handler, const TCreateBusOptions& options) override
{
YT_ASSERT_THREAD_AFFINITY_ANY();
@@ -181,7 +186,6 @@ public:
.EndMap());
auto poller = TTcpDispatcher::TImpl::Get()->GetXferPoller();
-
auto connection = New<TTcpConnection>(
Config_,
EConnectionType::Client,
@@ -196,7 +200,8 @@ public:
std::move(handler),
std::move(poller),
PacketTranscoderFactory_,
- MemoryUsageTracker_);
+ MemoryUsageTracker_,
+ DynamicConfig_.Acquire()->NeedRejectConnectionDueMemoryOvercommit);
connection->Start();
return New<TTcpClientBusProxy>(std::move(connection));
@@ -204,6 +209,7 @@ public:
private:
const TBusClientConfigPtr Config_;
+ TAtomicIntrusivePtr<TBusClientDynamicConfig> DynamicConfig_{New<TBusClientDynamicConfig>()};
IPacketTranscoderFactory* const PacketTranscoderFactory_;
const IMemoryUsageTrackerPtr MemoryUsageTracker_;
const std::string EndpointDescription_;
diff --git a/yt/yt/core/bus/tcp/config.cpp b/yt/yt/core/bus/tcp/config.cpp
index f67c6fba6c..809a2d7413 100644
--- a/yt/yt/core/bus/tcp/config.cpp
+++ b/yt/yt/core/bus/tcp/config.cpp
@@ -126,6 +126,9 @@ TBusServerConfigPtr TBusServerConfig::CreateUds(const std::string& socketPath)
return config;
}
+void TBusServerDynamicConfig::Register(TRegistrar /*registrar*/)
+{ }
+
////////////////////////////////////////////////////////////////////////////////
void TBusConfig::Register(TRegistrar registrar)
@@ -170,6 +173,14 @@ void TBusConfig::Register(TRegistrar registrar)
////////////////////////////////////////////////////////////////////////////////
+void TBusDynamicConfig::Register(TRegistrar registrar)
+{
+ registrar.Parameter("need_reject_connection_due_memory_overcommit", &TThis::NeedRejectConnectionDueMemoryOvercommit)
+ .Default(false);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
void TBusClientConfig::Register(TRegistrar registrar)
{
registrar.Parameter("address", &TThis::Address)
@@ -198,6 +209,9 @@ TBusClientConfigPtr TBusClientConfig::CreateUds(const std::string& socketPath)
return config;
}
+void TBusClientDynamicConfig::Register(TRegistrar /*registrar*/)
+{ }
+
////////////////////////////////////////////////////////////////////////////////
} // namespace NYT::NBus
diff --git a/yt/yt/core/bus/tcp/config.h b/yt/yt/core/bus/tcp/config.h
index 491612fabb..d0a5bde08d 100644
--- a/yt/yt/core/bus/tcp/config.h
+++ b/yt/yt/core/bus/tcp/config.h
@@ -130,6 +130,21 @@ DEFINE_REFCOUNTED_TYPE(TBusConfig)
////////////////////////////////////////////////////////////////////////////////
+class TBusDynamicConfig
+ : public NYTree::TYsonStruct
+{
+public:
+ bool NeedRejectConnectionDueMemoryOvercommit;
+
+ REGISTER_YSON_STRUCT(TBusDynamicConfig);
+
+ static void Register(TRegistrar registrar);
+};
+
+DEFINE_REFCOUNTED_TYPE(TBusDynamicConfig)
+
+////////////////////////////////////////////////////////////////////////////////
+
class TBusServerConfig
: public TBusConfig
{
@@ -151,6 +166,19 @@ DEFINE_REFCOUNTED_TYPE(TBusServerConfig)
////////////////////////////////////////////////////////////////////////////////
+class TBusServerDynamicConfig
+ : public TBusDynamicConfig
+{
+public:
+ REGISTER_YSON_STRUCT(TBusServerDynamicConfig);
+
+ static void Register(TRegistrar registrar);
+};
+
+DEFINE_REFCOUNTED_TYPE(TBusServerDynamicConfig)
+
+////////////////////////////////////////////////////////////////////////////////
+
class TBusClientConfig
: public TBusConfig
{
@@ -170,5 +198,18 @@ DEFINE_REFCOUNTED_TYPE(TBusClientConfig)
////////////////////////////////////////////////////////////////////////////////
+class TBusClientDynamicConfig
+ : public TBusDynamicConfig
+{
+public:
+ REGISTER_YSON_STRUCT(TBusClientDynamicConfig);
+
+ static void Register(TRegistrar registrar);
+};
+
+DEFINE_REFCOUNTED_TYPE(TBusClientDynamicConfig)
+
+////////////////////////////////////////////////////////////////////////////////
+
} // namespace NYT::NBus
diff --git a/yt/yt/core/bus/tcp/connection.cpp b/yt/yt/core/bus/tcp/connection.cpp
index a357e9199d..792cc3d0c4 100644
--- a/yt/yt/core/bus/tcp/connection.cpp
+++ b/yt/yt/core/bus/tcp/connection.cpp
@@ -114,7 +114,8 @@ TTcpConnection::TTcpConnection(
IMessageHandlerPtr handler,
IPollerPtr poller,
IPacketTranscoderFactory* packetTranscoderFactory,
- IMemoryUsageTrackerPtr memoryUsageTracker)
+ IMemoryUsageTrackerPtr memoryUsageTracker,
+ bool needRejectConnectionDueMemoryOvercommit)
: Config_(std::move(config))
, ConnectionType_(connectionType)
, Id_(id)
@@ -139,6 +140,7 @@ TTcpConnection::TTcpConnection(
, EncryptionMode_(Config_->EncryptionMode)
, VerificationMode_(Config_->VerificationMode)
, MemoryUsageTracker_(std::move(memoryUsageTracker))
+ , NeedRejectConnectionDueMemoryOvercommit_(needRejectConnectionDueMemoryOvercommit)
{ }
TTcpConnection::~TTcpConnection()
@@ -596,9 +598,15 @@ void TTcpConnection::InitBuffers()
ConnectionType_ == EConnectionType::Server
? GetRefCountedTypeCookie<TTcpServerConnectionWriteBufferTag>()
: GetRefCountedTypeCookie<TTcpClientConnectionWriteBufferTag>());
- trackedBlob
- .TryReserve(WriteBufferSize)
- .ThrowOnError();
+
+ if (NeedRejectConnectionDueMemoryOvercommit_) {
+ trackedBlob
+ .TryReserve(WriteBufferSize)
+ .ThrowOnError();
+ } else {
+ trackedBlob.Reserve(WriteBufferSize);
+ }
+
WriteBuffers_.push_back(std::move(trackedBlob));
}
diff --git a/yt/yt/core/bus/tcp/connection.h b/yt/yt/core/bus/tcp/connection.h
index bc520f331a..229d244828 100644
--- a/yt/yt/core/bus/tcp/connection.h
+++ b/yt/yt/core/bus/tcp/connection.h
@@ -88,7 +88,8 @@ public:
IMessageHandlerPtr handler,
NConcurrency::IPollerPtr poller,
IPacketTranscoderFactory* packetTranscoderFactory,
- IMemoryUsageTrackerPtr memoryUsageTracker);
+ IMemoryUsageTrackerPtr memoryUsageTracker,
+ bool needRejectConnectionDueMemoryOvercommit);
~TTcpConnection();
@@ -279,6 +280,7 @@ private:
const EVerificationMode VerificationMode_;
const IMemoryUsageTrackerPtr MemoryUsageTracker_;
+ const bool NeedRejectConnectionDueMemoryOvercommit_;
NYTree::IAttributeDictionaryPtr PeerAttributes_;
diff --git a/yt/yt/core/bus/tcp/public.h b/yt/yt/core/bus/tcp/public.h
index 0c86109c1a..aa86f46c4b 100644
--- a/yt/yt/core/bus/tcp/public.h
+++ b/yt/yt/core/bus/tcp/public.h
@@ -14,9 +14,15 @@ using TBusNetworkCountersPtr = TIntrusivePtr<TBusNetworkCounters>;
DECLARE_REFCOUNTED_CLASS(TMultiplexingBandConfig)
DECLARE_REFCOUNTED_CLASS(TTcpDispatcherConfig)
DECLARE_REFCOUNTED_CLASS(TTcpDispatcherDynamicConfig)
+
DECLARE_REFCOUNTED_CLASS(TBusConfig)
+DECLARE_REFCOUNTED_CLASS(TBusDynamicConfig)
+
DECLARE_REFCOUNTED_CLASS(TBusServerConfig)
+DECLARE_REFCOUNTED_CLASS(TBusServerDynamicConfig)
+
DECLARE_REFCOUNTED_CLASS(TBusClientConfig)
+DECLARE_REFCOUNTED_CLASS(TBusClientDynamicConfig)
struct IPacketTranscoderFactory;
diff --git a/yt/yt/core/bus/tcp/server.cpp b/yt/yt/core/bus/tcp/server.cpp
index a9fcf0c8a0..2802f2d5d6 100644
--- a/yt/yt/core/bus/tcp/server.cpp
+++ b/yt/yt/core/bus/tcp/server.cpp
@@ -78,6 +78,13 @@ public:
YT_LOG_INFO("Bus server started");
}
+ void OnDynamicConfigChanged(const NBus::TBusServerDynamicConfigPtr& config)
+ {
+ YT_VERIFY(config);
+
+ DynamicConfig_.Store(config);
+ }
+
TFuture<void> Stop()
{
YT_LOG_INFO("Stopping Bus server");
@@ -122,6 +129,7 @@ public:
protected:
const TBusServerConfigPtr Config_;
+ TAtomicIntrusivePtr<TBusServerDynamicConfig> DynamicConfig_{New<TBusServerDynamicConfig>()};
const IPollerPtr Poller_;
const IMessageHandlerPtr Handler_;
IPacketTranscoderFactory* const PacketTranscoderFactory_;
@@ -254,7 +262,6 @@ protected:
.EndMap());
auto poller = TTcpDispatcher::TImpl::Get()->GetXferPoller();
-
auto connection = New<TTcpConnection>(
Config_,
EConnectionType::Server,
@@ -269,7 +276,8 @@ protected:
Handler_,
std::move(poller),
PacketTranscoderFactory_,
- MemoryUsageTracker_);
+ MemoryUsageTracker_,
+ DynamicConfig_.Acquire()->NeedRejectConnectionDueMemoryOvercommit);
{
auto guard = WriterGuard(ConnectionsSpinLock_);
@@ -435,6 +443,18 @@ public:
Server_.Store(server);
server->Start();
+ server->OnDynamicConfigChanged(DynamicConfig_.Acquire());
+ }
+
+ void OnDynamicConfigChanged(const NBus::TBusServerDynamicConfigPtr& config) final
+ {
+ YT_VERIFY(config);
+
+ DynamicConfig_.Store(config);
+
+ if (auto server = Server_.Acquire()) {
+ server->OnDynamicConfigChanged(config);
+ }
}
TFuture<void> Stop() final
@@ -448,6 +468,7 @@ public:
private:
const TBusServerConfigPtr Config_;
+ TAtomicIntrusivePtr<TBusServerDynamicConfig> DynamicConfig_{New<TBusServerDynamicConfig>()};
IPacketTranscoderFactory* const PacketTranscoderFactory_;
const IMemoryUsageTrackerPtr MemoryUsageTracker_;
@@ -521,6 +542,15 @@ public:
}
}
+ void OnDynamicConfigChanged(const NBus::TBusServerDynamicConfigPtr& config) final
+ {
+ YT_VERIFY(config);
+
+ for (const auto& server : Servers_) {
+ server->OnDynamicConfigChanged(config);
+ }
+ }
+
TFuture<void> Stop() final
{
if (Config_->EnableLocalBypass && Config_->Port) {
diff --git a/yt/yt/core/concurrency/arcadia_interop-inl.h b/yt/yt/core/concurrency/arcadia_interop-inl.h
new file mode 100644
index 0000000000..57dc19c66d
--- /dev/null
+++ b/yt/yt/core/concurrency/arcadia_interop-inl.h
@@ -0,0 +1,68 @@
+#ifndef ARCADIA_INTEROP_INL_H_
+#error "Direct inclusion of this file is not allowed, include async_batcher.h"
+// For the sake of sane code completion.
+#include "arcadia_interop.h"
+#endif
+#undef ARCADIA_INTEROP_INL_H_
+
+#include <yt/yt/core/actions/future.h>
+
+#include <library/cpp/threading/future/core/future.h>
+
+namespace NYT::NConcurrency {
+
+////////////////////////////////////////////////////////////////////////////////
+
+template <class T>
+::NThreading::TFuture<T> ToArcadiaFuture(const TFuture<T>& future)
+{
+ auto promise = ::NThreading::NewPromise<T>();
+ auto wrappedFuture = promise.GetFuture();
+
+ future
+ .Subscribe(BIND([promise = std::move(promise)] (const TErrorOr<T>& valueOrError) mutable {
+ try {
+ if constexpr (std::is_same_v<T, void>) {
+ valueOrError
+ .ThrowOnError();
+ promise.TrySetValue();
+ } else {
+ auto value = valueOrError
+ .ValueOrThrow();
+ promise.TrySetValue(std::move(value));
+ }
+ } catch (...) {
+ promise.TrySetException(std::current_exception());
+ }
+ }));
+
+ return wrappedFuture;
+}
+
+template <class T>
+TFuture<T> FromArcadiaFuture(const ::NThreading::TFuture<T>& future)
+{
+ auto promise = NewPromise<T>();
+ auto wrappedFuture = promise.ToFuture();
+
+ future
+ .Subscribe([promise = std::move(promise)](::NThreading::TFuture<T> future) {
+ YT_ASSERT(future.HasValue() || future.HasException());
+ try {
+ if constexpr (std::is_void_v<T>) {
+ future.TryRethrow();
+ promise.TrySet();
+ } else {
+ promise.TrySet(future.ExtractValueSync());
+ }
+ } catch (const std::exception& e) {
+ promise.TrySet(NYT::TError(e));
+ }
+ });
+
+ return wrappedFuture;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+} // namespace NYT::NConcurrency
diff --git a/yt/yt/core/concurrency/arcadia_interop.h b/yt/yt/core/concurrency/arcadia_interop.h
new file mode 100644
index 0000000000..d46ebb8c00
--- /dev/null
+++ b/yt/yt/core/concurrency/arcadia_interop.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include <yt/yt/core/actions/future.h>
+
+#include <library/cpp/threading/future/core/future.h>
+
+namespace NYT::NConcurrency {
+
+////////////////////////////////////////////////////////////////////////////////
+
+template <class T>
+::NThreading::TFuture<T> ToArcadiaFuture(const TFuture<T>& future);
+
+template <class T>
+TFuture<T> FromArcadiaFuture(const ::NThreading::TFuture<T>& future);
+
+////////////////////////////////////////////////////////////////////////////////
+
+} // namespace NYT::NConcurrency
+
+#define ARCADIA_INTEROP_INL_H_
+#include "arcadia_interop-inl.h"
+#undef ARCADIA_INTEROP_INL_H_
diff --git a/yt/yt/core/concurrency/unittests/arcadia_interop_ut.cpp b/yt/yt/core/concurrency/unittests/arcadia_interop_ut.cpp
new file mode 100644
index 0000000000..a987ebbca2
--- /dev/null
+++ b/yt/yt/core/concurrency/unittests/arcadia_interop_ut.cpp
@@ -0,0 +1,137 @@
+#include <yt/yt/core/test_framework/framework.h>
+
+#include <yt/yt/core/concurrency/arcadia_interop.h>
+
+namespace NYT::NConcurrency {
+namespace {
+
+////////////////////////////////////////////////////////////////////////////////
+
+TEST(TFutureInteropTest, FromArcadiaFutureWithValue1)
+{
+ auto future = FromArcadiaFuture(::NThreading::MakeFuture<int>(1));
+ ASSERT_TRUE(future.IsSet());
+ EXPECT_EQ(1, future.Get().ValueOrThrow());
+}
+
+TEST(TFutureInteropTest, FromArcadiaFutureWithValue2)
+{
+ ::testing::TProbeState state;
+ auto promise = ::NThreading::NewPromise<::testing::TProbe>();
+ auto future = FromArcadiaFuture(promise.GetFuture());
+ EXPECT_TRUE(!future.IsSet());
+ promise.SetValue(::testing::TProbe(&state));
+ ASSERT_TRUE(future.IsSet());
+ EXPECT_TRUE(future.Get().ValueOrThrow().IsValid());
+ EXPECT_THAT(state, ::testing::HasCopyMoveCounts(0, 3));
+}
+
+TEST(TFutureInteropTest, FromArcadiaFutureWithError1)
+{
+ auto promise = ::NThreading::NewPromise<int>();
+ promise.SetException("error");
+ auto future = FromArcadiaFuture(promise.GetFuture());
+ ASSERT_TRUE(future.IsSet());
+ EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.Get().ThrowOnError(), std::exception, "error");
+}
+
+TEST(TFutureInteropTest, FromArcadiaFutureWithError2)
+{
+ auto promise = ::NThreading::NewPromise<int>();
+ auto future = FromArcadiaFuture(promise.GetFuture());
+ EXPECT_TRUE(!future.IsSet());
+ promise.SetException("error");
+ ASSERT_TRUE(future.IsSet());
+ EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.Get().ThrowOnError(), std::exception, "error");
+}
+
+TEST(TFutureInteropTest, FromArcadiaFutureVoid1)
+{
+ auto promise = ::NThreading::NewPromise<void>();
+ auto future = FromArcadiaFuture(promise.GetFuture());
+ EXPECT_TRUE(!future.IsSet());
+ promise.SetValue();
+ ASSERT_TRUE(future.IsSet());
+ EXPECT_NO_THROW(future.Get().ThrowOnError());
+}
+
+TEST(TFutureInteropTest, FromArcadiaFutureVoid2)
+{
+ auto promise = ::NThreading::NewPromise<void>();
+ auto future = FromArcadiaFuture(promise.GetFuture());
+ EXPECT_TRUE(!future.IsSet());
+ promise.SetException("error");
+ ASSERT_TRUE(future.IsSet());
+ ASSERT_THROW_MESSAGE_HAS_SUBSTR(future.Get().ThrowOnError(), std::exception, "error");
+}
+
+TEST(TFutureInteropTest, FromArcadiaFutureCancel)
+{
+ auto promise = ::NThreading::NewPromise<void>();
+ auto future = FromArcadiaFuture(promise.GetFuture());
+ EXPECT_TRUE(!future.IsSet());
+ future.Cancel(TError("canceled"));
+ promise.SetValue();
+ ASSERT_THROW_MESSAGE_HAS_SUBSTR(future.Get().ThrowOnError(), std::exception, "canceled");
+}
+
+TEST(TFutureInteropTest, ToArcadiaFutureWithValue)
+{
+ ::testing::TProbeState state;
+ auto promise = NewPromise<::testing::TProbe>();
+ auto future = ToArcadiaFuture(promise.ToFuture());
+ EXPECT_FALSE(future.HasValue());
+ promise.Set(::testing::TProbe(&state));
+ ASSERT_TRUE(future.HasValue());
+ EXPECT_TRUE(future.GetValue().IsValid());
+ EXPECT_THAT(state, ::testing::HasCopyMoveCounts(1, 2));
+}
+
+TEST(TFutureInteropTest, ToArcadiaFutureWithError1)
+{
+ ::testing::TProbeState state;
+ auto promise = NewPromise<::testing::TProbe>();
+ auto future = ToArcadiaFuture(promise.ToFuture());
+ EXPECT_FALSE(future.HasValue());
+ promise.Set(TError("error"));
+ ASSERT_TRUE(future.HasException());
+ EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.TryRethrow(), std::exception, "error");
+ EXPECT_THAT(state, ::testing::HasCopyMoveCounts(0, 0));
+}
+
+TEST(TFutureInteropTest, ToArcadiaFutureCanceled)
+{
+ ::testing::TProbeState state;
+ auto promise = NewPromise<::testing::TProbe>();
+ auto future = ToArcadiaFuture(promise.ToFuture());
+ EXPECT_FALSE(future.HasValue());
+
+ promise.ToFuture().Cancel(TError("canceled"));
+ ASSERT_TRUE(future.HasException());
+ EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.TryRethrow(), std::exception, "canceled");
+ EXPECT_THAT(state, ::testing::HasCopyMoveCounts(0, 0));
+}
+
+TEST(TFutureInteropTest, ToArcadiaFutureVoid1)
+{
+ auto promise = NewPromise<void>();
+ auto future = ToArcadiaFuture(promise.ToFuture());
+ EXPECT_FALSE(future.HasValue());
+ promise.Set();
+ EXPECT_TRUE(future.HasValue());
+}
+
+TEST(TFutureInteropTest, ToArcadiaFutureVoid2)
+{
+ auto promise = NewPromise<void>();
+ auto future = ToArcadiaFuture(promise.ToFuture());
+ EXPECT_FALSE(future.HasValue());
+ promise.Set(TError("error"));
+ EXPECT_TRUE(future.HasException());
+ EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.TryRethrow(), std::exception, "error");
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+} // namespace
+} // namespace NYT:::NConcurrency
diff --git a/yt/yt/core/concurrency/unittests/ya.make b/yt/yt/core/concurrency/unittests/ya.make
index 1d59b915ee..f78e63ebce 100644
--- a/yt/yt/core/concurrency/unittests/ya.make
+++ b/yt/yt/core/concurrency/unittests/ya.make
@@ -5,6 +5,7 @@ INCLUDE(${ARCADIA_ROOT}/yt/ya_cpp.make.inc)
PROTO_NAMESPACE(yt)
SRCS(
+ arcadia_interop_ut.cpp
async_barrier_ut.cpp
async_looper_ut.cpp
async_rw_lock_ut.cpp
@@ -47,6 +48,7 @@ PEERDIR(
yt/yt/core/test_framework
library/cpp/json/yson
+ library/cpp/threading/future
)
REQUIREMENTS(