Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package vectorscan for openSUSE:Factory 
checked in at 2023-09-12 21:04:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vectorscan (Old)
 and      /work/SRC/openSUSE:Factory/.vectorscan.new.1766 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "vectorscan"

Tue Sep 12 21:04:27 2023 rev:7 rq:1110627 version:5.4.10.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/vectorscan/vectorscan.changes    2023-05-03 
12:57:38.171959028 +0200
+++ /work/SRC/openSUSE:Factory/.vectorscan.new.1766/vectorscan.changes  
2023-09-12 21:05:58.522792970 +0200
@@ -1,0 +2,15 @@
+Tue Sep 12 12:00:44 UTC 2023 - Guillaume GARDET <guillaume.gar...@opensuse.org>
+
+- Update to 5.4.10.1:
+  * Bugfix/disable fat macos arm
+  * Fix compilation with libcxx 16
+  * Fix use-of-uninitialized-value due to getData128()
+  * Use std::vector instead of boost::container::small_vector under MSan
+  * Feature/enable fat runtime arm
+  * adding ifndef around HS_PUBLIC_API definition so that
+    vectorscan can be statically linked into another shared
+    library without exporting symbols
+  * Feature/backport hyperscan 2023 q3
+- Run unit-hyperscan in %check
+
+-------------------------------------------------------------------

Old:
----
  vectorscan-5.4.9.tar.gz

New:
----
  vectorscan-5.4.10.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ vectorscan.spec ++++++
--- /var/tmp/diff_new_pack.h4F4Jd/_old  2023-09-12 21:05:59.530828927 +0200
+++ /var/tmp/diff_new_pack.h4F4Jd/_new  2023-09-12 21:05:59.534829069 +0200
@@ -21,7 +21,7 @@
 %define so_suffix -vectorscan
 
 Name:           vectorscan
-Version:        5.4.9
+Version:        5.4.10.1
 Release:        0
 Summary:        Regular expression matching library
 License:        BSD-3-Clause
@@ -121,6 +121,11 @@
 install bin/* %{buildroot}%{_bindir}
 popd
 
+%check
+pushd build/
+LD_LIBRARY_PATH=%{buildroot}%{_libdir} bin/unit-hyperscan
+popd
+
 %post -n libhs%{sover}%{so_suffix}%{sover} -p /sbin/ldconfig
 %postun -n libhs%{sover}%{so_suffix}%{sover} -p /sbin/ldconfig
 

++++++ vectorscan-5.4.9.tar.gz -> vectorscan-5.4.10.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/CHANGELOG-vectorscan.md 
new/vectorscan-vectorscan-5.4.10.1/CHANGELOG-vectorscan.md
--- old/vectorscan-vectorscan-5.4.9/CHANGELOG-vectorscan.md     1970-01-01 
01:00:00.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/CHANGELOG-vectorscan.md  2023-09-08 
12:42:33.000000000 +0200
@@ -0,0 +1,50 @@
+# Vectorscan Change Log
+
+This is a list of notable changes to Vectorscan, in reverse chronological 
order. For Hyperscan Changelog, check CHANGELOG.md
+
+## [5.4.10] 2023-09-23
+- Fix compilation with libcxx 16 by @rschu1ze in #144
+- Fix use-of-uninitialized-value due to getData128() by @azat in #148
+- Use std::vector instead of boost::container::small_vector under MSan by 
@azat in #149
+- Feature/enable fat runtime arm by @markos in #165
+- adding ifndef around HS_PUBLIC_API definition so that vectorscan can be 
statically linked into another shared library without exporting symbols by 
@jeffplaisance in #164
+- Feature/backport hyperscan 2023 q3 by @markos in #169
+- Prepare for 5.4.10 by @markos in #167
+
+## [5.4.9] 2023-03-23
+- Major change: Enable SVE & SVE2 builds and make it a supported architecture! 
(thanks to @abondarev84)
+- Fix various clang-related bugs
+- Fix Aarch64 bug in Parser.rl because of char signedness. Make unsigned char 
the default in the Parser for all architectures.
+- Fix Power bug, multiple tests were failing.
+- C++20 related change, use prefixed assume_aligned to avoid conflict with 
C++20 std::assume_aligned.
+
+## [5.4.8] 2022-09-13
+- CMake: Use non-deprecated method for finding python by @jth in #108
+- Optimize vectorscan for aarch64 by using shrn instruction by @danlark1 in 
#113
+- Fixed the PCRE download location by @pareenaverma in #116
+- Bugfix/hyperscan backport 202208 by @markos in #118
+- VSX optimizations by @markos in #119
+- when compiling with mingw64, use __mingw_aligned_malloc() and 
__mingw_aligned_free() by @liquidaty in #121
+- [NEON] simplify/optimize shift/align primitives by @markos in #123
+- Merge develop to master by @markos in #124
+
+## [5.4.7] 2022-05-05
+- Fix word boundary assertions under C++20 by @BigRedEye in #90
+- Fix all ASAN issues in vectorscan by @danlark1 in #93
+- change FAT_RUNTIME to a normal option so it can be set to off by 
@a16bitsysop in #94
+- Optimized and correct version of movemask128 for ARM by @danlark1 in #102
+
+## [5.4.6] 2022-01-21
+- Major refactoring of many engines to use internal SuperVector C++ templates 
library. Code size reduced to 1/3rd with no loss of performance in most cases.
+- Microbenchmarking tool added for performance finetuning
+- Arm Advanced SIMD/NEON fully ported. Initial work on SVE2 for a couple of 
engines.
+- Power9 VSX ppc64le fully ported. Initial port needs some optimization.
+- Clang compiler support added.
+- Apple M1 support added.
+- CI added, the following configurations are tested on every PR:
+  gcc-debug, gcc-release, clang-debug, clang-release:
+  Linux Intel: SSE4.2, AVX2, AVX512, FAT
+  Linux Arm
+  Linux Power9
+  clang-debug, clang-release:
+  MacOS Apple M1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/CHANGELOG.md 
new/vectorscan-vectorscan-5.4.10.1/CHANGELOG.md
--- old/vectorscan-vectorscan-5.4.9/CHANGELOG.md        2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/CHANGELOG.md     2023-09-08 
12:42:33.000000000 +0200
@@ -2,6 +2,31 @@
 
 This is a list of notable changes to Hyperscan, in reverse chronological order.
 
+## [5.4.2] 2023-04-19
+- Roll back bugfix for github issue #350: Besides using scratch for
+  corresponding database, Hyperscan also allows user to use larger scratch
+  allocated for another database. Users can leverage this property to achieve
+  safe scratch usage in multi-database scenarios. Behaviors beyond these are
+  discouraged and results are undefined.
+- Fix hsdump issue due to invalid nfa type.
+
+## [5.4.1] 2023-02-20
+- The Intel Hyperscan team is pleased to provide a bug fix release to our open 
source library.
+  Intel also maintains an upgraded version available through your Intel sales 
representative.
+- Bugfix for issue #184: fix random char value of UTF-8.
+- Bugfix for issue #291: bypass logical combination flag in 
hs_expression_info().
+- Bugfix for issue #292: fix build error due to libc symbol parsing.
+- Bugfix for issue #302/304: add empty string check for pure literal API.
+- Bugfix for issue #303: fix unknown instruction error in pure literal API.
+- Bugfix for issue #303: avoid memory leak in stream close stage.
+- Bugfix for issue #305: fix assertion failure in DFA construction.
+- Bugfix for issue #317: fix aligned allocator segment faults.
+- Bugfix for issue #350: add quick validity check for scratch.
+- Bugfix for issue #359: fix glibc-2.34 stack size issue.
+- Bugfix for issue #360: fix SKIP flag issue in chimera.
+- Bugfix for issue #362: fix one cotec check corner issue in UTF-8 validation.
+- Fix other compile issues.
+
 ## [5.4.0] 2020-12-31
 - Improvement on literal matcher "Fat Teddy" performance, including
   support for Intel(R) AVX-512 Vector Byte Manipulation Instructions (Intel(R)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/CMakeLists.txt 
new/vectorscan-vectorscan-5.4.10.1/CMakeLists.txt
--- old/vectorscan-vectorscan-5.4.9/CMakeLists.txt      2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/CMakeLists.txt   2023-09-08 
12:42:33.000000000 +0200
@@ -4,7 +4,7 @@
 
 set (HS_MAJOR_VERSION 5)
 set (HS_MINOR_VERSION 4)
-set (HS_PATCH_VERSION 9)
+set (HS_PATCH_VERSION 10)
 set (HS_VERSION ${HS_MAJOR_VERSION}.${HS_MINOR_VERSION}.${HS_PATCH_VERSION})
 
 set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
@@ -187,11 +187,15 @@
     string(FIND "${GNUCC_ARCH}" "sve" POS_SVE)
     string(FIND "${GNUCC_ARCH}" "sve2" POS_SVE2)
     string(FIND "${GNUCC_ARCH}" "sve2-bitperm" POS_SVE2_BITPERM)
-    if (NOT POS_SVE EQUAL 0)
+    if(NOT POS_SVE2_BITPERM EQUAL 0)
+        set(SVE2_BITPERM_FOUND 1)
+        set(SVE2_FOUND 1)
         set(SVE_FOUND 1)
     elseif(NOT POS_SVE2 EQUAL 0)
         set(SVE2_FOUND 1)
-    elseif(NOT POS_SVE2_BITPERM EQUAL 0)
+        set(SVE_FOUND 1)
+    elseif (NOT POS_SVE EQUAL 0)
+        set(SVE_FOUND 1)
         set(SVE2_BITPERM_FOUND 1)
     endif()
 
@@ -249,13 +253,18 @@
 endif()
 
 if (ARCH_AARCH64)
-    if (BUILD_SVE2_BITPERM AND NOT SVE2_BITPERM_FOUND)
-        set(GNUCC_ARCH "${GNUCC_ARCH}+sve2-bitperm")
-    elseif (BUILD_SVE2 AND NOT SVE2_FOUND)
-        set(GNUCC_ARCH "${GNUCC_ARCH}+sve2")
-    elseif (BUILD_SVE AND NOT SVE_FOUND)
-        set(GNUCC_ARCH "${GNUCC_ARCH}+sve")
-    endif ()
+    if (NOT FAT_RUNTIME)
+        if (BUILD_SVE2_BITPERM AND NOT SVE2_BITPERM_FOUND)
+            set(GNUCC_ARCH "${GNUCC_ARCH}+sve2-bitperm")
+        elseif (BUILD_SVE2 AND NOT SVE2_FOUND)
+            set(GNUCC_ARCH "${GNUCC_ARCH}+sve2")
+        elseif (BUILD_SVE AND NOT SVE_FOUND)
+            set(GNUCC_ARCH "${GNUCC_ARCH}+sve")
+        endif ()
+    else()
+        set(ARCH_C_FLAGS "")
+        set(ARCH_CXX_FLAGS "")
+    endif()
 endif(ARCH_AARCH64)
 
 message(STATUS "ARCH_C_FLAGS   : ${ARCH_C_FLAGS}")
@@ -271,24 +280,6 @@
     endif()
 endif()
 
-#if (ARCH_IA32 OR ARCH_X86_64 OR ARCH_ARM32 OR ARCH_AARCH64)
-#    if (NOT CMAKE_C_FLAGS MATCHES .*march.* AND NOT CMAKE_C_FLAGS MATCHES 
.*mtune.*)
-#        set(ARCH_C_FLAGS "-march=${GNUCC_ARCH} -mtune=${TUNE_FLAG}")
-#    endif()
-#    if (NOT CMAKE_CXX_FLAGS MATCHES .*march.* AND NOT CMAKE_CXX_FLAGS MATCHES 
.*mtune.*)
-#        set(ARCH_CXX_FLAGS "-march=${GNUCC_ARCH} -mtune=${TUNE_FLAG}")
-#    endif()
-#endif()
-    
-#if(ARCH_PPC64EL)
-#    if (NOT CMAKE_C_FLAGS MATCHES .*march.* AND NOT CMAKE_C_FLAGS MATCHES 
.*mtune.*)
-#        set(ARCH_C_FLAGS "-mtune=${TUNE_FLAG}")
-#    endif()
-#    if (NOT CMAKE_CXX_FLAGS MATCHES .*march.* AND NOT CMAKE_CXX_FLAGS MATCHES 
.*mtune.*)
-#        set(ARCH_CXX_FLAGS "-mtune=${TUNE_FLAG}")
-#    endif()
-#endif()
-
 # compiler version checks TODO: test more compilers
 if (CMAKE_COMPILER_IS_GNUCXX)
     set(GNUCXX_MINVER "9")
@@ -396,6 +387,7 @@
 
 option(FAT_RUNTIME "Build a library that supports multiple microarchitectures" 
ON)
 if (CMAKE_SYSTEM_NAME MATCHES "Linux" AND FAT_RUNTIME MATCHES "ON")
+    message("Fat Runtime for ${GNUCC_ARCH}")
     # This is a Linux-only feature for now - requires platform support
     # elsewhere
     message(STATUS "generator is ${CMAKE_GENERATOR}")
@@ -482,6 +474,18 @@
     set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-unused-const-variable")
 endif()
 
+# clang-14 complains about unused-but-set variable.
+CHECK_CXX_COMPILER_FLAG("-Wunused-but-set-variable" CXX_UNUSED_BUT_SET_VAR)
+if (CXX_UNUSED_BUT_SET_VAR)
+    set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-unused-but-set-variable")
+endif()
+
+# clang-14 complains about using bitwise operator instead of logical ones.
+CHECK_CXX_COMPILER_FLAG("-Wbitwise-instead-of-logical" 
CXX_BITWISE_INSTEAD_OF_LOGICAL)
+if (CXX_BITWISE_INSTEAD_OF_LOGICAL)
+    set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-bitwise-instead-of-logical")
+endif()
+
 # gcc 6 complains about type attributes that get ignored, like alignment
 CHECK_CXX_COMPILER_FLAG("-Wignored-attributes" CXX_IGNORED_ATTR)
 if (CXX_IGNORED_ATTR)
@@ -513,8 +517,10 @@
 
 # gcc 10 complains about this
 CHECK_C_COMPILER_FLAG("-Wstringop-overflow" CC_STRINGOP_OVERFLOW)
-if(CC_STRINGOP_OVERFLOW)
+CHECK_CXX_COMPILER_FLAG("-Wstringop-overflow" CXX_STRINGOP_OVERFLOW)
+if(CC_STRINGOP_OVERFLOW OR CXX_STRINGOP_OVERFLOW)
     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-stringop-overflow")
+    set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -Wno-stringop-overflow")
 endif()
 
 include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
@@ -529,8 +535,8 @@
 
 
 if (FAT_RUNTIME)
-    if (NOT (ARCH_IA32 OR ARCH_X86_64))
-        message(FATAL_ERROR "Fat runtime is not supported on non-Intel 
architectures")
+    if (NOT (ARCH_IA32 OR ARCH_X86_64 OR ARCH_AARCH64))
+        message(FATAL_ERROR "Fat runtime is only supported on Intel and 
Aarch64 architectures")
     else()
         message(STATUS "Building runtime for multiple microarchitectures")
     endif()
@@ -634,7 +640,7 @@
 
 set (hs_exec_SRCS
     ${hs_HEADERS}
-    src/hs_version.h
+    src/hs_version.h.in
     src/ue2common.h
     src/allocator.h
     src/crc32.c
@@ -790,7 +796,7 @@
 endif ()
 endif()
 
-if (NOT BUILD_SVE2)
+if (FAT_RUNTIME OR (NOT FAT_RUNTIME AND NOT BUILD_SVE2))
 set (hs_exec_SRCS
     ${hs_exec_SRCS}
     src/nfa/vermicelli_simd.cpp)
@@ -810,7 +816,7 @@
     src/grey.h
     src/hs.cpp
     src/hs_internal.h
-    src/hs_version.h
+    src/hs_version.h.in
     src/scratch.h
     src/state.h
     src/ue2common.h
@@ -1273,137 +1279,222 @@
         add_library(hs_compile_shared OBJECT ${hs_compile_SRCS})
         set_target_properties(hs_compile_shared PROPERTIES 
POSITION_INDEPENDENT_CODE TRUE)
     endif()
+else ()
+    if (ARCH_IA32 OR ARCH_X86_64)
+        set(BUILD_WRAPPER "${PROJECT_SOURCE_DIR}/cmake/build_wrapper.sh")
+        if (NOT BUILD_AVX512)
+            set (DISPATCHER_DEFINE "-DDISABLE_AVX512_DISPATCH")
+        endif (NOT BUILD_AVX512)
+        if (NOT BUILD_AVX512VBMI)
+            set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} 
-DDISABLE_AVX512VBMI_DISPATCH")
+        endif (NOT BUILD_AVX512VBMI)
+        set_source_files_properties(src/dispatcher.c PROPERTIES
+            COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function 
${DISPATCHER_DEFINE}")
+
+        if (BUILD_STATIC_LIBS)
+            add_library(hs_exec_core2 OBJECT ${hs_exec_SRCS})
+            list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_core2>)
+            set_target_properties(hs_exec_core2 PROPERTIES
+                COMPILE_FLAGS "-march=core2 -msse4.2"
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                )
 
-else (FAT_RUNTIME)
-
-    set(BUILD_WRAPPER "${PROJECT_SOURCE_DIR}/cmake/build_wrapper.sh")
-    if (NOT BUILD_AVX512)
-        set (DISPATCHER_DEFINE "-DDISABLE_AVX512_DISPATCH")
-    endif (NOT BUILD_AVX512)
-    if (NOT BUILD_AVX512VBMI)
-        set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} 
-DDISABLE_AVX512VBMI_DISPATCH")
-    endif (NOT BUILD_AVX512VBMI)
-    set_source_files_properties(src/dispatcher.c PROPERTIES
-        COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function 
${DISPATCHER_DEFINE}")
+            add_library(hs_exec_corei7 OBJECT ${hs_exec_SRCS})
+            list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_corei7>)
+            set_target_properties(hs_exec_corei7 PROPERTIES
+                COMPILE_FLAGS "-march=corei7 -msse4.2"
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} corei7 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                )
 
-    if (BUILD_STATIC_LIBS)
-        add_library(hs_exec_core2 OBJECT ${hs_exec_SRCS})
-        list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_core2>)
-        set_target_properties(hs_exec_core2 PROPERTIES
-            COMPILE_FLAGS "-march=core2 -msse4.2"
-            RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 
${CMAKE_MODULE_PATH}/keep.syms.in"
-            )
+            if (BUILD_AVX2)
+                add_library(hs_exec_avx2 OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
+                list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx2>)
+                set_target_properties(hs_exec_avx2 PROPERTIES
+                    COMPILE_FLAGS "-march=core-avx2 -mavx2"
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx2 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_AVX2)
+            if (BUILD_AVX512)
+                add_library(hs_exec_avx512 OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
+                list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512>)
+                set_target_properties(hs_exec_avx512 PROPERTIES
+                    COMPILE_FLAGS "${SKYLAKE_FLAG}"
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_AVX512)
+            if (BUILD_AVX512VBMI)
+                add_library(hs_exec_avx512vbmi OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
+                list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512vbmi>)
+                set_target_properties(hs_exec_avx512vbmi PROPERTIES
+                    COMPILE_FLAGS "${ICELAKE_FLAG}"
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_AVX512VBMI)
+
+            add_library(hs_exec_common OBJECT
+                ${hs_exec_common_SRCS}
+                src/dispatcher.c
+                )
 
-        add_library(hs_exec_corei7 OBJECT ${hs_exec_SRCS})
-        list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_corei7>)
-        set_target_properties(hs_exec_corei7 PROPERTIES
-            COMPILE_FLAGS "-march=corei7 -msse4.2"
-            RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} corei7 
${CMAKE_MODULE_PATH}/keep.syms.in"
-            )
+            # hs_version.c is added explicitly to avoid some build systems 
that refuse to
+            # create a lib without any src (I'm looking at you Xcode)
 
-        if (BUILD_AVX2)
-            add_library(hs_exec_avx2 OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
-            list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx2>)
-            set_target_properties(hs_exec_avx2 PROPERTIES
-                COMPILE_FLAGS "-march=core-avx2 -mavx2"
-                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx2 
${CMAKE_MODULE_PATH}/keep.syms.in"
-                )
-        endif (BUILD_AVX2)
-        if (BUILD_AVX512)
-            add_library(hs_exec_avx512 OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
-            list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512>)
-            set_target_properties(hs_exec_avx512 PROPERTIES
-                COMPILE_FLAGS "${SKYLAKE_FLAG}"
-                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 
${CMAKE_MODULE_PATH}/keep.syms.in"
+            add_library(hs_runtime STATIC src/hs_version.c
+                $<TARGET_OBJECTS:hs_exec_common>
+                ${RUNTIME_LIBS})
+            set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
+            add_library(hs_compile OBJECT ${hs_compile_SRCS})
+
+            # we want the static lib for testing
+            add_library(hs STATIC src/hs_version.c src/hs_valid_platform.c
+                $<TARGET_OBJECTS:hs_compile>
+                $<TARGET_OBJECTS:hs_exec_common>
+                ${RUNTIME_LIBS})
+        endif (BUILD_STATIC_LIBS)
+
+        if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS)
+            # build shared libs
+            add_library(hs_compile_shared OBJECT ${hs_compile_SRCS})
+            set_target_properties(hs_compile_shared PROPERTIES 
POSITION_INDEPENDENT_CODE TRUE)
+            add_library(hs_exec_shared_core2 OBJECT ${hs_exec_SRCS})
+            list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_core2>)
+            set_target_properties(hs_exec_shared_core2 PROPERTIES
+                COMPILE_FLAGS "-march=core2 -msse4.2"
+                POSITION_INDEPENDENT_CODE TRUE
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 
${CMAKE_MODULE_PATH}/keep.syms.in"
                 )
-        endif (BUILD_AVX512)
-        if (BUILD_AVX512VBMI)
-            add_library(hs_exec_avx512vbmi OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
-            list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512vbmi>)
-            set_target_properties(hs_exec_avx512vbmi PROPERTIES
-                COMPILE_FLAGS "${ICELAKE_FLAG}"
-                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi 
${CMAKE_MODULE_PATH}/keep.syms.in"
+            add_library(hs_exec_shared_corei7 OBJECT ${hs_exec_SRCS})
+            list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_corei7>)
+            set_target_properties(hs_exec_shared_corei7 PROPERTIES
+                COMPILE_FLAGS "-march=corei7 -msse4.2"
+                POSITION_INDEPENDENT_CODE TRUE
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} corei7 
${CMAKE_MODULE_PATH}/keep.syms.in"
                 )
-        endif (BUILD_AVX512VBMI)
 
-        add_library(hs_exec_common OBJECT
+            if (BUILD_AVX2)
+                add_library(hs_exec_shared_avx2 OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
+                list(APPEND RUNTIME_SHLIBS 
$<TARGET_OBJECTS:hs_exec_shared_avx2>)
+                set_target_properties(hs_exec_shared_avx2 PROPERTIES
+                    COMPILE_FLAGS "-march=core-avx2 -mavx2"
+                    POSITION_INDEPENDENT_CODE TRUE
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx2 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_AVX2)
+            if (BUILD_AVX512)
+                add_library(hs_exec_shared_avx512 OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
+                list(APPEND RUNTIME_SHLIBS 
$<TARGET_OBJECTS:hs_exec_shared_avx512>)
+                set_target_properties(hs_exec_shared_avx512 PROPERTIES
+                    COMPILE_FLAGS "${SKYLAKE_FLAG}"
+                    POSITION_INDEPENDENT_CODE TRUE
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_AVX512)
+            if (BUILD_AVX512VBMI)
+                add_library(hs_exec_shared_avx512vbmi OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
+                list(APPEND RUNTIME_SHLIBS 
$<TARGET_OBJECTS:hs_exec_shared_avx512vbmi>)
+                set_target_properties(hs_exec_shared_avx512vbmi PROPERTIES
+                    COMPILE_FLAGS "${ICELAKE_FLAG}"
+                    POSITION_INDEPENDENT_CODE TRUE
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_AVX512VBMI)
+            add_library(hs_exec_common_shared OBJECT
             ${hs_exec_common_SRCS}
             src/dispatcher.c
             )
+            set_target_properties(hs_exec_common_shared PROPERTIES
+                OUTPUT_NAME hs_exec_common
+                POSITION_INDEPENDENT_CODE TRUE)
+
+        endif() # SHARED
+    endif (ARCH_IA32 OR ARCH_X86_64)
+    if (ARCH_AARCH64)
+        set(BUILD_WRAPPER "${PROJECT_SOURCE_DIR}/cmake/build_wrapper.sh")
+        if (BUILD_STATIC_LIBS)
+            add_library(hs_exec_neon OBJECT ${hs_exec_SRCS})
+            list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_neon>)
+            set_target_properties(hs_exec_neon PROPERTIES
+                COMPILE_FLAGS "-march=armv8-a"
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                )
 
-        # hs_version.c is added explicitly to avoid some build systems that 
refuse to
-        # create a lib without any src (I'm looking at you Xcode)
-
-        add_library(hs_runtime STATIC src/hs_version.c
-            $<TARGET_OBJECTS:hs_exec_common>
-            ${RUNTIME_LIBS})
-        set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
-        add_library(hs_compile OBJECT ${hs_compile_SRCS})
-
-        # we want the static lib for testing
-        add_library(hs STATIC src/hs_version.c src/hs_valid_platform.c
-            $<TARGET_OBJECTS:hs_compile>
-            $<TARGET_OBJECTS:hs_exec_common>
-            ${RUNTIME_LIBS})
-
-    endif (BUILD_STATIC_LIBS)
+           if (BUILD_SVE)
+                add_library(hs_exec_sve OBJECT ${hs_exec_SRCS} 
${hs_exec_sve_SRCS})
+                list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve>)
+                set_target_properties(hs_exec_sve PROPERTIES
+                    COMPILE_FLAGS "-march=armv8-a+sve"
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_SVE)
+            if (BUILD_SVE2)
+                add_library(hs_exec_sve2 OBJECT ${hs_exec_SRCS} 
${hs_exec_sve2_SRCS})
+                list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve2>)
+                set_target_properties(hs_exec_sve2 PROPERTIES
+                    COMPILE_FLAGS "-march=armv8-a+sve2"
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_SVE2)
+
+            add_library(hs_exec_common OBJECT
+                ${hs_exec_common_SRCS}
+                src/dispatcher.c
+                )
 
-    if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS)
-        # build shared libs
-        add_library(hs_compile_shared OBJECT ${hs_compile_SRCS})
-        set_target_properties(hs_compile_shared PROPERTIES 
POSITION_INDEPENDENT_CODE TRUE)
-        add_library(hs_exec_shared_core2 OBJECT ${hs_exec_SRCS})
-        list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_core2>)
-        set_target_properties(hs_exec_shared_core2 PROPERTIES
-            COMPILE_FLAGS "-march=core2 -msse4.2"
-            POSITION_INDEPENDENT_CODE TRUE
-            RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 
${CMAKE_MODULE_PATH}/keep.syms.in"
-            )
-        add_library(hs_exec_shared_corei7 OBJECT ${hs_exec_SRCS})
-        list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_corei7>)
-        set_target_properties(hs_exec_shared_corei7 PROPERTIES
-            COMPILE_FLAGS "-march=corei7 -msse4.2"
-            POSITION_INDEPENDENT_CODE TRUE
-            RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} corei7 
${CMAKE_MODULE_PATH}/keep.syms.in"
-            )
+            # hs_version.c is added explicitly to avoid some build systems 
that refuse to
+            # create a lib without any src (I'm looking at you Xcode)
 
-        if (BUILD_AVX2)
-            add_library(hs_exec_shared_avx2 OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
-            list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx2>)
-            set_target_properties(hs_exec_shared_avx2 PROPERTIES
-                COMPILE_FLAGS "-march=core-avx2 -mavx2"
-                POSITION_INDEPENDENT_CODE TRUE
-                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx2 
${CMAKE_MODULE_PATH}/keep.syms.in"
-                )
-        endif (BUILD_AVX2)
-        if (BUILD_AVX512)
-            add_library(hs_exec_shared_avx512 OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
-            list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx512>)
-            set_target_properties(hs_exec_shared_avx512 PROPERTIES
-                COMPILE_FLAGS "${SKYLAKE_FLAG}"
+            add_library(hs_runtime STATIC src/hs_version.c
+                $<TARGET_OBJECTS:hs_exec_common>
+                ${RUNTIME_LIBS})
+            set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
+            add_library(hs_compile OBJECT ${hs_compile_SRCS})
+
+            # we want the static lib for testing
+            add_library(hs STATIC src/hs_version.c src/hs_valid_platform.c
+                $<TARGET_OBJECTS:hs_compile>
+                $<TARGET_OBJECTS:hs_exec_common>
+                ${RUNTIME_LIBS})
+        endif (BUILD_STATIC_LIBS)
+
+        if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS)
+            # build shared libs
+            add_library(hs_compile_shared OBJECT ${hs_compile_SRCS})
+            set_target_properties(hs_compile_shared PROPERTIES 
POSITION_INDEPENDENT_CODE TRUE)
+            add_library(hs_exec_shared_neon OBJECT ${hs_exec_SRCS})
+            list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_neon>)
+            set_target_properties(hs_exec_shared_neon PROPERTIES
+                COMPILE_FLAGS "-march=armv8-a"
                 POSITION_INDEPENDENT_CODE TRUE
-                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon 
${CMAKE_MODULE_PATH}/keep.syms.in"
                 )
-        endif (BUILD_AVX512)
-        if (BUILD_AVX512VBMI)
-            add_library(hs_exec_shared_avx512vbmi OBJECT ${hs_exec_SRCS} 
${hs_exec_avx2_SRCS})
-            list(APPEND RUNTIME_SHLIBS 
$<TARGET_OBJECTS:hs_exec_shared_avx512vbmi>)
-            set_target_properties(hs_exec_shared_avx512vbmi PROPERTIES
-                COMPILE_FLAGS "${ICELAKE_FLAG}"
-                POSITION_INDEPENDENT_CODE TRUE
-                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi 
${CMAKE_MODULE_PATH}/keep.syms.in"
-                )
-        endif (BUILD_AVX512VBMI)
-        add_library(hs_exec_common_shared OBJECT
-        ${hs_exec_common_SRCS}
-        src/dispatcher.c
-        )
-        set_target_properties(hs_exec_common_shared PROPERTIES
-            OUTPUT_NAME hs_exec_common
-            POSITION_INDEPENDENT_CODE TRUE)
-    endif() # SHARED
-
 
+            if (BUILD_SVE)
+                add_library(hs_exec_shared_sve OBJECT ${hs_exec_SRCS} 
${hs_exec_sve_SRCS})
+                list(APPEND RUNTIME_SHLIBS 
$<TARGET_OBJECTS:hs_exec_shared_sve>)
+                set_target_properties(hs_exec_shared_sve PROPERTIES
+                    COMPILE_FLAGS "-march=armv8-a+sve"
+                    POSITION_INDEPENDENT_CODE TRUE
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_SVE)
+            if (BUILD_SVE2)
+                add_library(hs_exec_shared_sve2 OBJECT ${hs_exec_SRCS} 
${hs_exec_sve2_SRCS})
+                list(APPEND RUNTIME_SHLIBS 
$<TARGET_OBJECTS:hs_exec_shared_sve2>)
+                set_target_properties(hs_exec_shared_sve2 PROPERTIES
+                    COMPILE_FLAGS "-march=armv8-a+sve2"
+                    POSITION_INDEPENDENT_CODE TRUE
+                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 
${CMAKE_MODULE_PATH}/keep.syms.in"
+                    )
+            endif (BUILD_SVE2)
+            add_library(hs_exec_common_shared OBJECT
+            ${hs_exec_common_SRCS}
+            src/dispatcher.c
+            )
+            set_target_properties(hs_exec_common_shared PROPERTIES
+                OUTPUT_NAME hs_exec_common
+                POSITION_INDEPENDENT_CODE TRUE)
+        endif() # SHARED
+    endif (ARCH_AARCH64)
 endif (NOT FAT_RUNTIME)
 
 if (NOT BUILD_SHARED_LIBS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/chimera/ch_runtime.c 
new/vectorscan-vectorscan-5.4.10.1/chimera/ch_runtime.c
--- old/vectorscan-vectorscan-5.4.9/chimera/ch_runtime.c        2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/chimera/ch_runtime.c     2023-09-08 
12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018-2020, Intel Corporation
+ * Copyright (c) 2018-2022, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/cmake/arch.cmake 
new/vectorscan-vectorscan-5.4.10.1/cmake/arch.cmake
--- old/vectorscan-vectorscan-5.4.9/cmake/arch.cmake    2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/cmake/arch.cmake 2023-09-08 
12:42:33.000000000 +0200
@@ -8,7 +8,6 @@
     set (INTRIN_INC_H "intrin.h")
 elseif (HAVE_C_ARM_NEON_H)
     set (INTRIN_INC_H "arm_neon.h")
-    set (FAT_RUNTIME OFF)
 elseif (HAVE_C_PPC64EL_ALTIVEC_H)
     set (INTRIN_INC_H "altivec.h")
     set (FAT_RUNTIME OFF)
@@ -25,6 +24,9 @@
 endif ()
 
 if (ARCH_AARCH64)
+    if (APPLE)
+       set (FAT_RUNTIME OFF)
+    endif()
     set(PREV_FLAGS "${CMAKE_C_FLAGS}")
     if (BUILD_SVE2_BITPERM)
         set(CMAKE_C_FLAGS "-march=${GNUCC_ARCH} ${CMAKE_C_FLAGS}")
@@ -77,21 +79,30 @@
 endif ()
 
 if (FAT_RUNTIME)
-    if (NOT DEFINED(BUILD_AVX2))
-        set(BUILD_AVX2 TRUE)
-    endif ()
-    # test the highest level microarch to make sure everything works
-    if (BUILD_AVX512)
-        if (BUILD_AVX512VBMI)
-            set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
${ICELAKE_FLAG}")
-        else ()
-            set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
${SKYLAKE_FLAG}")
-        endif (BUILD_AVX512VBMI)
-    elseif (BUILD_AVX2)
-        set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
-march=core-avx2 -mavx2")
-    elseif ()
-        set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
-march=core-i7 -mssse3")
-    endif ()
+    if (ARCH_IA32 OR ARCH_X86_64)
+        if (NOT DEFINED(BUILD_AVX2))
+            set(BUILD_AVX2 TRUE)
+        endif ()
+        # test the highest level microarch to make sure everything works
+        if (BUILD_AVX512)
+            if (BUILD_AVX512VBMI)
+                set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
${ICELAKE_FLAG}")
+            else ()
+                set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
${SKYLAKE_FLAG}")
+            endif (BUILD_AVX512VBMI)
+        elseif (BUILD_AVX2)
+            set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
-march=core-avx2 -mavx2")
+        elseif ()
+            set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
-march=core-i7 -mssse3")
+        endif ()
+    elseif(ARCH_AARCH64)
+        if (NOT DEFINED(BUILD_SVE))
+            set(BUILD_SVE TRUE)
+        endif ()
+        if (NOT DEFINED(BUILD_SVE2))
+            set(BUILD_SVE2 TRUE)
+        endif ()
+    endif()
 else (NOT FAT_RUNTIME)
     # if not fat runtime, then test given cflags
     set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} 
${ARCH_C_FLAGS}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/dispatcher.c 
new/vectorscan-vectorscan-5.4.10.1/src/dispatcher.c
--- old/vectorscan-vectorscan-5.4.9/src/dispatcher.c    2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/dispatcher.c 2023-09-08 
12:42:33.000000000 +0200
@@ -32,7 +32,6 @@
 #include "ue2common.h"
 #if defined(ARCH_IA32) || defined(ARCH_X86_64)
 #include "util/arch/x86/cpuid_inline.h"
-#endif
 #include "util/join.h"
 
 #if defined(DISABLE_AVX512_DISPATCH)
@@ -83,6 +82,41 @@
     HS_PUBLIC_API                                                              
\
     RTYPE NAME(__VA_ARGS__) __attribute__((ifunc("resolve_" #NAME)))
 
+#elif defined(ARCH_AARCH64)
+#include "util/arch/arm/cpuid_inline.h"
+#include "util/join.h"
+
+#define CREATE_DISPATCH(RTYPE, NAME, ...)                                      
\
+    /* create defns */                                                         
\
+    RTYPE JOIN(sve2_, NAME)(__VA_ARGS__);                                      
\
+    RTYPE JOIN(sve_, NAME)(__VA_ARGS__);                                       
\
+    RTYPE JOIN(neon_, NAME)(__VA_ARGS__);                                      
\
+                                                                               
\
+    /* error func */                                                           
\
+    static inline RTYPE JOIN(error_, NAME)(__VA_ARGS__) {                      
\
+        return (RTYPE)HS_ARCH_ERROR;                                           
\
+    }                                                                          
\
+                                                                               
\
+    /* resolver */                                                             
\
+    static RTYPE (*JOIN(resolve_, NAME)(void))(__VA_ARGS__) {                  
\
+        if (check_sve2()) {                                                    
\
+            return JOIN(sve2_, NAME);                                          
\
+        }                                                                      
\
+        if (check_sve()) {                                                     
\
+            return JOIN(sve_, NAME);                                           
\
+        }                                                                      
\
+        if (check_neon()) {                                                    
\
+            return JOIN(neon_, NAME);                                          
\
+        }                                                                      
\
+        /* anything else is fail */                                            
\
+        return JOIN(error_, NAME);                                             
\
+    }                                                                          
\
+                                                                               
\
+    /* function */                                                             
\
+    HS_PUBLIC_API                                                              
\
+    RTYPE NAME(__VA_ARGS__) __attribute__((ifunc("resolve_" #NAME)))
+
+#endif
 CREATE_DISPATCH(hs_error_t, hs_scan, const hs_database_t *db, const char *data,
                 unsigned length, unsigned flags, hs_scratch_t *scratch,
                 match_event_handler onEvent, void *userCtx);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/hs.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/hs.cpp
--- old/vectorscan-vectorscan-5.4.9/src/hs.cpp  2023-03-23 15:11:37.000000000 
+0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/hs.cpp       2023-09-08 
12:42:33.000000000 +0200
@@ -199,12 +199,14 @@
     }
 
 #if defined(FAT_RUNTIME)
+#if defined(ARCH_IA32) || defined(ARCH_X86_64)
     if (!check_ssse3()) {
         *db = nullptr;
         *comp_error = generateCompileError("Unsupported architecture", -1);
         return HS_ARCH_ERROR;
     }
 #endif
+#endif
 
     if (!checkMode(mode, comp_error)) {
         *db = nullptr;
@@ -320,14 +322,15 @@
         *comp_error = generateCompileError("Invalid parameter: elements is 
zero", -1);
         return HS_COMPILER_ERROR;
     }
-
 #if defined(FAT_RUNTIME)
+#if defined(ARCH_IA32) || defined(ARCH_X86_64)
     if (!check_ssse3()) {
         *db = nullptr;
         *comp_error = generateCompileError("Unsupported architecture", -1);
         return HS_ARCH_ERROR;
     }
 #endif
+#endif
 
     if (!checkMode(mode, comp_error)) {
         *db = nullptr;
@@ -500,11 +503,13 @@
     }
 
 #if defined(FAT_RUNTIME)
+#if defined(ARCH_IA32) || defined(ARCH_X86_64)
     if (!check_ssse3()) {
         *error = generateCompileError("Unsupported architecture", -1);
         return HS_ARCH_ERROR;
     }
 #endif
+#endif
 
     if (!info) {
         *error = generateCompileError("Invalid parameter: info is NULL", -1);
@@ -631,10 +636,12 @@
 extern "C" HS_PUBLIC_API
 hs_error_t HS_CDECL hs_free_compile_error(hs_compile_error_t *error) {
 #if defined(FAT_RUNTIME)
+#if defined(ARCH_IA32) || defined(ARCH_X86_64)
     if (!check_ssse3()) {
         return HS_ARCH_ERROR;
     }
 #endif
+#endif
     freeCompileError(error);
     return HS_SUCCESS;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/hs_valid_platform.c 
new/vectorscan-vectorscan-5.4.10.1/src/hs_valid_platform.c
--- old/vectorscan-vectorscan-5.4.9/src/hs_valid_platform.c     2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/hs_valid_platform.c  2023-09-08 
12:42:33.000000000 +0200
@@ -31,6 +31,8 @@
 #include "ue2common.h"
 #if defined(ARCH_IA32) || defined(ARCH_X86_64)
 #include "util/arch/x86/cpuid_inline.h"
+#elif defined(ARCH_AARCH64)
+#include "util/arch/arm/cpuid_inline.h"
 #endif
 
 HS_PUBLIC_API
@@ -43,7 +45,11 @@
         return HS_ARCH_ERROR;
     }
 #elif defined(ARCH_ARM32) || defined(ARCH_AARCH64)
-    return HS_SUCCESS;
+   if (check_neon()) {
+        return HS_SUCCESS;
+    } else {
+        return HS_ARCH_ERROR;
+    }
 #elif defined(ARCH_PPC64EL)
     return HS_SUCCESS;    
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/nfa/goughcompile.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/nfa/goughcompile.cpp
--- old/vectorscan-vectorscan-5.4.9/src/nfa/goughcompile.cpp    2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/nfa/goughcompile.cpp 2023-09-08 
12:42:33.000000000 +0200
@@ -206,6 +206,10 @@
             assert(contains(src_slots, slot_id));
 
             shared_ptr<GoughSSAVarMin> vmin = make_shared<GoughSSAVarMin>();
+            if (!vmin) {
+                assert(0);
+                throw std::bad_alloc();
+            }
             cfg[e].vars.emplace_back(vmin);
             final_var = vmin.get();
 
@@ -317,6 +321,10 @@
             DEBUG_PRINTF("bypassing min on join %u\n", slot_id);
         } else {
             shared_ptr<GoughSSAVarMin> vmin = make_shared<GoughSSAVarMin>();
+            if (!vmin) {
+                assert(0);
+                throw std::bad_alloc();
+            }
             cfg[e].vars.emplace_back(vmin);
             final_var = vmin.get();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/nfa/repeatcompile.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/nfa/repeatcompile.cpp
--- old/vectorscan-vectorscan-5.4.9/src/nfa/repeatcompile.cpp   2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/nfa/repeatcompile.cpp        
2023-09-08 12:42:33.000000000 +0200
@@ -124,6 +124,10 @@
                                  const depth &repeatMax, u32 minPeriod)
     : stateSize(0), packedCtrlSize(0), horizon(0), patchCount(0),
       patchSize(0), encodingSize(0), patchesOffset(0) {
+    if (type == REPEAT_SPARSE_OPTIMAL_P && minPeriod == 0) {
+        assert(0);
+        throw std::domain_error("SPARSE_OPTIMAL_P must have non-zero 
minPeriod.");
+    }
     assert(repeatMin <= repeatMax);
     assert(repeatMax.is_reachable());
     assert(minPeriod || type != REPEAT_SPARSE_OPTIMAL_P);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/nfagraph/ng_som.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/nfagraph/ng_som.cpp
--- old/vectorscan-vectorscan-5.4.9/src/nfagraph/ng_som.cpp     2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/nfagraph/ng_som.cpp  2023-09-08 
12:42:33.000000000 +0200
@@ -2445,6 +2445,10 @@
 bool doLitHaigSom(NG &ng, NGHolder &g, som_type som) {
     ue2_literal lit;
     shared_ptr<NGHolder> rhs = make_shared<NGHolder>();
+    if (!rhs) {
+        assert(0);
+        throw std::bad_alloc();
+    }
     if (!ng.cc.grey.allowLitHaig) {
         return false;
     }
@@ -2509,6 +2513,11 @@
     ue2_literal lit;
     shared_ptr<NGHolder> rhs = make_shared<NGHolder>();
     shared_ptr<NGHolder> lhs = make_shared<NGHolder>();
+    if (!rhs || !lhs) {
+        assert(0);
+        throw std::bad_alloc();
+    }
+
     if (!splitOffBestLiteral(g, regions, &lit, &*lhs, &*rhs, ng.cc)) {
         return false;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/nfagraph/ng_violet.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/nfagraph/ng_violet.cpp
--- old/vectorscan-vectorscan-5.4.9/src/nfagraph/ng_violet.cpp  2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/nfagraph/ng_violet.cpp       
2023-09-08 12:42:33.000000000 +0200
@@ -1036,6 +1036,11 @@
     shared_ptr<NGHolder> lhs = make_shared<NGHolder>();
     shared_ptr<NGHolder> rhs = make_shared<NGHolder>();
 
+    if (!lhs || !rhs) {
+        assert(0);
+        throw std::bad_alloc();
+    }
+
     unordered_map<NFAVertex, NFAVertex> lhs_map;
     unordered_map<NFAVertex, NFAVertex> rhs_map;
 
@@ -1229,6 +1234,10 @@
             DEBUG_PRINTF("splitting on pivot %zu\n", h[pivot].index);
             unordered_map<NFAVertex, NFAVertex> temp_map;
             shared_ptr<NGHolder> new_lhs = make_shared<NGHolder>();
+            if (!new_lhs) {
+                assert(0);
+                throw std::bad_alloc();
+            }
             splitLHS(h, pivot, new_lhs.get(), &temp_map);
 
             /* want to cut off paths to pivot from things other than the pivot 
-
@@ -1310,6 +1319,10 @@
             if (!contains(done_rhs, adj)) {
                 unordered_map<NFAVertex, NFAVertex> temp_map;
                 shared_ptr<NGHolder> new_rhs = make_shared<NGHolder>();
+                if (!new_rhs) {
+                    assert(0);
+                    throw std::bad_alloc();
+                }
                 splitRHS(h, adj, new_rhs.get(), &temp_map);
                 remove_edge(new_rhs->start, new_rhs->accept, *new_rhs);
                 remove_edge(new_rhs->start, new_rhs->acceptEod, *new_rhs);
@@ -2281,6 +2294,10 @@
     assert(!splitters.empty());
 
     shared_ptr<NGHolder> lhs = make_shared<NGHolder>();
+    if (!lhs) {
+        assert(0);
+        throw bad_alloc();
+    }
     unordered_map<NFAVertex, NFAVertex> v_map;
     cloneHolder(*lhs, base_graph, &v_map);
     lhs->kind = NFA_INFIX;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/parser/logical_combination.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/parser/logical_combination.cpp
--- old/vectorscan-vectorscan-5.4.9/src/parser/logical_combination.cpp  
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/parser/logical_combination.cpp       
2023-09-08 12:42:33.000000000 +0200
@@ -140,7 +140,8 @@
         }
         hs_compile_error_t *compile_err = NULL;
         hs_expr_info_t *info = NULL;
-        hs_error_t err = hs_expression_info(expressions[i], flags[i], &info,
+        hs_error_t err = hs_expression_info(expressions[i],
+                                            flags ? flags[i] : 0, &info,
                                             &compile_err);
         if (err != HS_SUCCESS) {
             hs_free_compile_error(compile_err);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/parser/utf8_validate.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/parser/utf8_validate.cpp
--- old/vectorscan-vectorscan-5.4.9/src/parser/utf8_validate.cpp        
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/parser/utf8_validate.cpp     
2023-09-08 12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Intel Corporation
+ * Copyright (c) 2015-2022, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -72,7 +72,7 @@
     while (i < len) {
         DEBUG_PRINTF("byte %zu: 0x%02x\n", i, s[i]);
         // One octet.
-        if (s[i] < 0x7f) {
+        if (s[i] <= 0x7f) {
             DEBUG_PRINTF("one octet\n");
             i++;
             continue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/rose/program_runtime.c 
new/vectorscan-vectorscan-5.4.10.1/src/rose/program_runtime.c
--- old/vectorscan-vectorscan-5.4.9/src/rose/program_runtime.c  2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/rose/program_runtime.c       
2023-09-08 12:42:33.000000000 +0200
@@ -959,7 +959,7 @@
         *valid_data_mask = 0xffff;
         return loadu128(ci->buf + offset);
     }
-    ALIGN_DIRECTIVE u8 data[sizeof(m128)];
+    ALIGN_DIRECTIVE u8 data[sizeof(m128)] = { 0 };
     *valid_data_mask = getBufferDataComplex(ci, offset, data, 16);
     return *(m128 *)data;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/rose/rose_build_convert.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/rose/rose_build_convert.cpp
--- old/vectorscan-vectorscan-5.4.9/src/rose/rose_build_convert.cpp     
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/rose/rose_build_convert.cpp  
2023-09-08 12:42:33.000000000 +0200
@@ -561,6 +561,10 @@
     DEBUG_PRINTF("woot?\n");
 
     shared_ptr<NGHolder> h_new = make_shared<NGHolder>();
+    if (!h_new) {
+        assert(0);
+        throw std::bad_alloc();
+    }
     unordered_map<NFAVertex, NFAVertex> rhs_map;
     vector<NFAVertex> exits_vec;
     insert(&exits_vec, exits_vec.end(), exits);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/rose/rose_build_program.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/rose/rose_build_program.cpp
--- old/vectorscan-vectorscan-5.4.9/src/rose/rose_build_program.cpp     
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/rose/rose_build_program.cpp  
2023-09-08 12:42:33.000000000 +0200
@@ -204,6 +204,15 @@
                 make_move_iterator(block.prog.end()));
 }
 
+template<class Iter>
+void RoseProgram::replace(Iter it, std::unique_ptr<RoseInstruction> ri) {
+    assert(!prog.empty());
+
+    const RoseInstruction *old_ptr = it->get();
+    *it = move(ri);
+    update_targets(prog.begin(), prog.end(), old_ptr, it->get());
+}
+
 bytecode_ptr<char> writeProgram(RoseEngineBlob &blob,
                                 const RoseProgram &program) {
     u32 total_len = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/rose/rose_build_program.h 
new/vectorscan-vectorscan-5.4.10.1/src/rose/rose_build_program.h
--- old/vectorscan-vectorscan-5.4.9/src/rose/rose_build_program.h       
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/rose/rose_build_program.h    
2023-09-08 12:42:33.000000000 +0200
@@ -124,13 +124,7 @@
      * \brief Replace the instruction pointed to by the given iterator.
      */
     template<class Iter>
-    void replace(Iter it, std::unique_ptr<RoseInstruction> ri) {
-        assert(!prog.empty());
-
-        const RoseInstruction *old_ptr = it->get();
-        *it = move(ri);
-        update_targets(prog.begin(), prog.end(), old_ptr, it->get());
-    }
+    void replace(Iter it, std::unique_ptr<RoseInstruction> ri);
 };
 
 bytecode_ptr<char> writeProgram(RoseEngineBlob &blob,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/runtime.c 
new/vectorscan-vectorscan-5.4.10.1/src/runtime.c
--- old/vectorscan-vectorscan-5.4.9/src/runtime.c       2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/runtime.c    2023-09-08 
12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019, Intel Corporation
+ * Copyright (c) 2015-2022, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -1013,6 +1013,7 @@
         report_eod_matches(id, scratch, onEvent, context);
         if (unlikely(internal_matching_error(scratch))) {
             unmarkScratchInUse(scratch);
+            hs_stream_free(id);
             return HS_UNKNOWN_ERROR;
         }
         unmarkScratchInUse(scratch);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/scratch.c 
new/vectorscan-vectorscan-5.4.10.1/src/scratch.c
--- old/vectorscan-vectorscan-5.4.9/src/scratch.c       2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/scratch.c    2023-09-08 
12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019, Intel Corporation
+ * Copyright (c) 2015-2023, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/scratch.h 
new/vectorscan-vectorscan-5.4.10.1/src/scratch.h
--- old/vectorscan-vectorscan-5.4.9/src/scratch.h       2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/scratch.h    2023-09-08 
12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019, Intel Corporation
+ * Copyright (c) 2015-2023, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/smallwrite/smallwrite_build.cpp 
new/vectorscan-vectorscan-5.4.10.1/src/smallwrite/smallwrite_build.cpp
--- old/vectorscan-vectorscan-5.4.9/src/smallwrite/smallwrite_build.cpp 
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/smallwrite/smallwrite_build.cpp      
2023-09-08 12:42:33.000000000 +0200
@@ -77,7 +77,7 @@
 struct LitTrieVertexProps {
     LitTrieVertexProps() = default;
     explicit LitTrieVertexProps(u8 c_in) : c(c_in) {}
-    size_t index; // managed by ue2_graph
+    size_t index = 0; // managed by ue2_graph
     u8 c = 0; //!< character reached on this vertex
     flat_set<ReportID> reports; //!< managed reports fired on this vertex
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/state.h 
new/vectorscan-vectorscan-5.4.10.1/src/state.h
--- old/vectorscan-vectorscan-5.4.9/src/state.h 2023-03-23 15:11:37.000000000 
+0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/state.h      2023-09-08 
12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Intel Corporation
+ * Copyright (c) 2015-2023, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/stream_compress_impl.h 
new/vectorscan-vectorscan-5.4.10.1/src/stream_compress_impl.h
--- old/vectorscan-vectorscan-5.4.9/src/stream_compress_impl.h  2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/stream_compress_impl.h       
2023-09-08 12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018, Intel Corporation
+ * Copyright (c) 2017-2023, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/ue2common.h 
new/vectorscan-vectorscan-5.4.10.1/src/ue2common.h
--- old/vectorscan-vectorscan-5.4.9/src/ue2common.h     2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/ue2common.h  2023-09-08 
12:42:33.000000000 +0200
@@ -73,7 +73,9 @@
 
 /* Shorthand for attribute to mark a function as part of our public API.
  * Functions without this attribute will be hidden. */
+#ifndef HS_PUBLIC_API
 #define HS_PUBLIC_API     __attribute__((visibility("default")))
+#endif
 
 #define ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0]))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/util/arch/arm/cpuid_inline.h 
new/vectorscan-vectorscan-5.4.10.1/src/util/arch/arm/cpuid_inline.h
--- old/vectorscan-vectorscan-5.4.9/src/util/arch/arm/cpuid_inline.h    
1970-01-01 01:00:00.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/util/arch/arm/cpuid_inline.h 
2023-09-08 12:42:33.000000000 +0200
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017-2020, Intel Corporation
+ * Copyright (c) 2023, VectorCamp PC
+ *
+ * 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 Intel Corporation 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.
+ */
+
+#ifndef AARCH64_CPUID_INLINE_H_
+#define AARCH64_CPUID_INLINE_H_
+
+#if defined(__linux__)
+#include <sys/auxv.h>
+#endif
+
+#include "ue2common.h"
+#include "util/arch/common/cpuid_flags.h"
+
+static inline
+int check_neon(void) {
+    return 1;
+}
+
+#if defined(__linux__)
+static inline
+int check_sve(void) {
+    unsigned long hwcap = getauxval(AT_HWCAP);
+    if (hwcap & HWCAP_SVE) {
+        return 1;
+    }
+    return 0;
+}
+
+static inline
+int check_sve2(void) {
+    unsigned long hwcap2 = getauxval(AT_HWCAP2);
+    if (hwcap2 & HWCAP2_SVE2) {
+        return 1;
+    }
+    return 0;
+}
+#else
+static inline
+int check_sve(void) {
+    return 0;
+}
+
+static inline
+int check_sve2(void) {
+    return 0;
+}
+#endif
+
+#endif // AARCH64_CPUID_INLINE_H_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/src/util/graph_undirected.h 
new/vectorscan-vectorscan-5.4.10.1/src/util/graph_undirected.h
--- old/vectorscan-vectorscan-5.4.9/src/util/graph_undirected.h 2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/util/graph_undirected.h      
2023-09-08 12:42:33.000000000 +0200
@@ -70,8 +70,8 @@
     using base_vertex_type = typename base_graph_traits::vertex_descriptor;
 
     base_edge_type underlying_edge;
-    const base_graph_type *g;
-    bool reverse; // if true, reverse vertices in source() and target()
+    const base_graph_type *g = nullptr;
+    bool reverse = false; // if true, reverse vertices in source() and target()
 
     inline std::pair<base_vertex_type, base_vertex_type>
     canonical_edge() const {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/util/small_vector.h 
new/vectorscan-vectorscan-5.4.10.1/src/util/small_vector.h
--- old/vectorscan-vectorscan-5.4.9/src/util/small_vector.h     2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/util/small_vector.h  2023-09-08 
12:42:33.000000000 +0200
@@ -29,7 +29,11 @@
 #ifndef UTIL_SMALL_VECTOR_H
 #define UTIL_SMALL_VECTOR_H
 
-#include <vector>
+#if defined(__has_feature)
+#  if __has_feature(memory_sanitizer)
+#define BUILD_WITH_MSAN
+#  endif
+#endif
 
 #include <boost/version.hpp>
 
@@ -37,8 +41,16 @@
  * We use the small_vector constructors introduced in Boost 1.61 (trac bug
  * #11866, github commit b436c91). If the Boost version is too old, we fall
  * back to using std::vector.
+ *
+ * Also with MSan boost::container::small_vector cannot be used because MSan
+ * reports some issues there, it looks similar to [1], but even adding
+ * __attribute__((no_sanitize_memory)) for ~small_vector_base() [2] is not
+ * enough since clang-16, so let's simply use std::vector under MSan.
+ *
+ *   [1]: https://github.com/google/sanitizers/issues/854
+ *   [2]: https://github.com/ClickHouse/boost/commit/229354100
  */
-#if BOOST_VERSION >= 106100
+#if !defined(BUILD_WITH_MSAN) && BOOST_VERSION >= 106100
 #  define HAVE_BOOST_CONTAINER_SMALL_VECTOR
 #endif
 
@@ -56,6 +68,8 @@
 
 #else
 
+#include <vector>
+
 // Boost version isn't new enough, fall back to just using std::vector.
 template <class T, std::size_t N, typename Allocator = std::allocator<T>>
 using small_vector = std::vector<T, Allocator>;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/src/util/ue2string.h 
new/vectorscan-vectorscan-5.4.10.1/src/util/ue2string.h
--- old/vectorscan-vectorscan-5.4.9/src/util/ue2string.h        2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/src/util/ue2string.h     2023-09-08 
12:42:33.000000000 +0200
@@ -133,7 +133,7 @@
             : lit(&lit_in), idx(idx_in) {}
 
         const ue2_literal *lit = nullptr;
-        size_t idx;
+        size_t idx = 0;
     };
 
     using const_reverse_iterator = std::reverse_iterator<const_iterator>;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/tools/hsbench/data_corpus.cpp 
new/vectorscan-vectorscan-5.4.10.1/tools/hsbench/data_corpus.cpp
--- old/vectorscan-vectorscan-5.4.9/tools/hsbench/data_corpus.cpp       
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/tools/hsbench/data_corpus.cpp    
2023-09-08 12:42:33.000000000 +0200
@@ -58,7 +58,10 @@
     }
     auto internal_stream_index = stream_indices[stream_id];
 
-    assert(blob || bytes > 0);
+    if (!(blob &&  bytes > 0)) {
+        assert(0);
+        throw std::domain_error("Invalid blob or bytes from sqlite3.");
+    }
     blocks.emplace_back(id, stream_id, internal_stream_index,
                         string(blob, blob + bytes));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vectorscan-vectorscan-5.4.9/tools/hsbench/main.cpp 
new/vectorscan-vectorscan-5.4.10.1/tools/hsbench/main.cpp
--- old/vectorscan-vectorscan-5.4.9/tools/hsbench/main.cpp      2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/tools/hsbench/main.cpp   2023-09-08 
12:42:33.000000000 +0200
@@ -740,6 +740,11 @@
         total += block.payload.size();
     }
 
+    if (total == 0) {
+        assert(0);
+        throw std::invalid_argument("Empty corpus.");
+    }
+
     return total;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/tools/hscollider/DatabaseProxy.h 
new/vectorscan-vectorscan-5.4.10.1/tools/hscollider/DatabaseProxy.h
--- old/vectorscan-vectorscan-5.4.9/tools/hscollider/DatabaseProxy.h    
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/tools/hscollider/DatabaseProxy.h 
2023-09-08 12:42:33.000000000 +0200
@@ -61,7 +61,7 @@
         std::lock_guard<std::mutex> lock(mutex);
         if (failed) {
             // We have previously failed to compile this database.
-            return nullptr;
+            throw CompileFailed("Unable to compile db previously.");
         }
         if (db) {
             return db;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/tools/hscollider/NfaGeneratedCorpora.cpp 
new/vectorscan-vectorscan-5.4.10.1/tools/hscollider/NfaGeneratedCorpora.cpp
--- old/vectorscan-vectorscan-5.4.9/tools/hscollider/NfaGeneratedCorpora.cpp    
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/tools/hscollider/NfaGeneratedCorpora.cpp 
2023-09-08 12:42:33.000000000 +0200
@@ -101,7 +101,7 @@
         pl.logicalKeyRenumber();
         const auto &m_lkey = pl.getLkeyMap();
         assert(!m_lkey.empty());
-        u32 a_subid; // arbitrary sub id
+        u32 a_subid = 0; // arbitrary sub id
         unordered_map<u32, vector<Corpus>> m_data;
         for (const auto &it : m_lkey) {
             a_subid = it.first;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/tools/hscollider/Thread.cpp 
new/vectorscan-vectorscan-5.4.10.1/tools/hscollider/Thread.cpp
--- old/vectorscan-vectorscan-5.4.9/tools/hscollider/Thread.cpp 2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/tools/hscollider/Thread.cpp      
2023-09-08 12:42:33.000000000 +0200
@@ -98,6 +98,6 @@
 }
 
 
-Thread::Thread(size_t num) : thread_id(num) {}
+Thread::Thread(size_t num) : thread_id(num), thread() {}
 
 Thread::~Thread() {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/tools/hscollider/args.cpp 
new/vectorscan-vectorscan-5.4.10.1/tools/hscollider/args.cpp
--- old/vectorscan-vectorscan-5.4.9/tools/hscollider/args.cpp   2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/tools/hscollider/args.cpp        
2023-09-08 12:42:33.000000000 +0200
@@ -499,8 +499,8 @@
                 } else if (in_corpora) {
                     corpora->push_back(optarg);
                     in_corpora = 2;
-                    break;
                 }
+                break;
             case 0:
                 break;
             default:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/unit/hyperscan/single.cpp 
new/vectorscan-vectorscan-5.4.10.1/unit/hyperscan/single.cpp
--- old/vectorscan-vectorscan-5.4.9/unit/hyperscan/single.cpp   2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/unit/hyperscan/single.cpp        
2023-09-08 12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016, Intel Corporation
+ * Copyright (c) 2015-2021, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -363,8 +363,9 @@
 // Mode bits for switching off various architecture features
 static const unsigned long long featureMask[] = {
     ~0ULL, /* native */
-    ~(HS_CPU_FEATURES_AVX2 | HS_CPU_FEATURES_AVX512), /* no avx2 */
-    ~HS_CPU_FEATURES_AVX512, /* no avx512 */
+    ~(HS_CPU_FEATURES_AVX2 | HS_CPU_FEATURES_AVX512 | 
HS_CPU_FEATURES_AVX512VBMI), /* no avx2 */
+    ~(HS_CPU_FEATURES_AVX512 | HS_CPU_FEATURES_AVX512VBMI), /* no avx512 */
+    ~HS_CPU_FEATURES_AVX512VBMI, /* no avx512vbmi */
 };
 
 INSTANTIATE_TEST_CASE_P(Single,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/unit/internal/database.cpp 
new/vectorscan-vectorscan-5.4.10.1/unit/internal/database.cpp
--- old/vectorscan-vectorscan-5.4.9/unit/internal/database.cpp  2023-03-23 
15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/unit/internal/database.cpp       
2023-09-08 12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2017, Intel Corporation
+ * Copyright (c) 2015-2021, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -56,6 +56,10 @@
     p.cpu_features |= HS_CPU_FEATURES_AVX512;
 #endif
 
+#if defined(HAVE_AVX512VBMI)
+    p.cpu_features |= HS_CPU_FEATURES_AVX512VBMI;
+#endif
+
     platform_t pp = target_to_platform(target_t(p));
     ASSERT_EQ(pp, hs_current_platform);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/unit/internal/utf8_validate.cpp 
new/vectorscan-vectorscan-5.4.10.1/unit/internal/utf8_validate.cpp
--- old/vectorscan-vectorscan-5.4.9/unit/internal/utf8_validate.cpp     
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/unit/internal/utf8_validate.cpp  
2023-09-08 12:42:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2017, Intel Corporation
+ * Copyright (c) 2015-2022, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -64,8 +64,8 @@
     {"공동경비구역", true},
     {"জলসাঘর", true},
 
-    // Invalid one-byte caseS.
-    {"\x7f", false},
+    // Valid one-byte caseS.
+    {"\x7f", true}, // \x7f is valid
 
     // These bytes should never appear in a UTF-8 stream.
     {"\xc0", false},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vectorscan-vectorscan-5.4.9/util/ng_corpus_properties.cpp 
new/vectorscan-vectorscan-5.4.10.1/util/ng_corpus_properties.cpp
--- old/vectorscan-vectorscan-5.4.9/util/ng_corpus_properties.cpp       
2023-03-23 15:11:37.000000000 +0100
+++ new/vectorscan-vectorscan-5.4.10.1/util/ng_corpus_properties.cpp    
2023-09-08 12:42:33.000000000 +0200
@@ -42,7 +42,7 @@
     : matchness(100), unmatchness(0), randomness(0), prefixRange(0, 0),
       suffixRange(0, 0), cycleMin(1), cycleMax(1),
       corpusLimit(DEFAULT_CORPUS_GENERATOR_LIMIT), editDistance(0),
-      alphabetSize(~0) {
+      alphabetSize(~0), rngSeed(0) {
     // empty
 }
 

Reply via email to