> Date: Wed, 28 Feb 2024 16:17:54 +0000
> From: Stuart Henderson <s...@spacehopper.org>
> 
> +cc kettenis for the IBT patch

Looks good to me.

> On 2024/02/28 16:15, Stuart Henderson wrote:
> > On 2024/02/23 17:19, Brad Smith wrote:
> > > Here is an update to aom 3.8.1.
> > > 
> > > https://aomedia.googlesource.com/aom/+/refs/heads/main/CHANGELOG
> > 
> > Here's a tweaked version adding yasm-compatible endbr64 magic to
> > x86inc.asm. Similar to what I added to audio/deadbeef but the
> > definitions in aom_config.asm use a different label (and setting to
> > 0 or 1 rather than checking for presence/absence).
> > 
> > Still builds on i386.
> > 
> > With this I can encode from one of the xiph.org test YUV4MPEG files
> > at https://media.xiph.org/video/derf/ on 11th gen intel without crashing,
> > which I couldn't do before.
> > 
> > $ aomenc -o test.webm -w 352 -h 288 --limit=100 --cpu-used=4 akiyo_cif.y4m
> > 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/multimedia/aom/Makefile,v
> retrieving revision 1.20
> diff -u -p -r1.20 Makefile
> --- Makefile  29 May 2023 17:52:01 -0000      1.20
> +++ Makefile  28 Feb 2024 16:06:36 -0000
> @@ -2,10 +2,10 @@ COMMENT=    Alliance for Open Media AV1 vid
>  
>  GH_ACCOUNT=  jbeich
>  GH_PROJECT=  aom
> -GH_TAGNAME=  v3.6.1
> +GH_TAGNAME=  v3.8.1
>  CATEGORIES=  multimedia
>  
> -SHARED_LIBS= aom     4.0
> +SHARED_LIBS= aom     4.1
>  
>  HOMEPAGE=    https://aomedia.org/
>  
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/multimedia/aom/distinfo,v
> retrieving revision 1.17
> diff -u -p -r1.17 distinfo
> --- distinfo  29 May 2023 17:52:01 -0000      1.17
> +++ distinfo  28 Feb 2024 16:06:36 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (aom-3.6.1.tar.gz) = Z5xBtBpQucWo+qG6kZ4MI5quf+hXUl4iP/IMVpl/EZ8=
> -SIZE (aom-3.6.1.tar.gz) = 5269397
> +SHA256 (aom-3.8.1.tar.gz) = Yp0PvVhlQWfSjz78LN/w5wjWgoCqWzD4F0Tn4YGo2FE=
> +SIZE (aom-3.8.1.tar.gz) = 5461300
> Index: patches/patch-CMakeLists_txt
> ===================================================================
> RCS file: /cvs/ports/multimedia/aom/patches/patch-CMakeLists_txt,v
> retrieving revision 1.5
> diff -u -p -r1.5 patch-CMakeLists_txt
> --- patches/patch-CMakeLists_txt      9 Apr 2023 06:17:17 -0000       1.5
> +++ patches/patch-CMakeLists_txt      28 Feb 2024 16:06:36 -0000
> @@ -1,12 +1,13 @@
>  Index: CMakeLists.txt
>  --- CMakeLists.txt.orig
>  +++ CMakeLists.txt
> -@@ -824,7 +824,7 @@ if(ENABLE_EXAMPLES AND "${CMAKE_GENERATOR}" MATCHES "M
> - endif()
> - 
> - if(BUILD_SHARED_LIBS)
> --  if(NOT WIN32 AND NOT APPLE)
> -+  if(NOT WIN32 AND NOT APPLE AND NOT CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
> +@@ -828,7 +828,8 @@ if(BUILD_SHARED_LIBS)
> +   # https://clang.llvm.org/docs/AddressSanitizer.html#usage.
> +   if(NOT WIN32
> +      AND NOT APPLE
> +-     AND NOT (CMAKE_C_COMPILER_ID MATCHES "Clang" AND SANITIZE))
> ++     AND NOT (CMAKE_C_COMPILER_ID MATCHES "Clang" AND SANITIZE)
> ++     AND NOT CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
>       # The -z defs linker option reports unresolved symbol references from 
> object
>       # files when building a shared library.
>       if("${CMAKE_VERSION}" VERSION_LESS "3.13")
> Index: patches/patch-aom_ports_aarch32_cpudetect_c
> ===================================================================
> RCS file: patches/patch-aom_ports_aarch32_cpudetect_c
> diff -N patches/patch-aom_ports_aarch32_cpudetect_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-aom_ports_aarch32_cpudetect_c       28 Feb 2024 16:06:36 
> -0000
> @@ -0,0 +1,23 @@
> +Allow ARM CPU runtime detection code to build on OpenBSD.
> +
> +Index: aom_ports/aarch32_cpudetect.c
> +--- aom_ports/aarch32_cpudetect.c.orig
> ++++ aom_ports/aarch32_cpudetect.c
> +@@ -12,7 +12,7 @@
> + 
> + #include "arm_cpudetect.h"
> + 
> +-#if !CONFIG_RUNTIME_CPU_DETECT
> ++#if !CONFIG_RUNTIME_CPU_DETECT || defined(__OpenBSD__)
> + 
> + static int arm_get_cpu_caps(void) {
> +   // This function should actually be a no-op. There is no way to adjust 
> any of
> +@@ -25,7 +25,7 @@ static int arm_get_cpu_caps(void) {
> +   return flags;
> + }
> + 
> +-#elif defined(_MSC_VER)  // end !CONFIG_RUNTIME_CPU_DETECT
> ++#elif defined(_MSC_VER)  // end !CONFIG_RUNTIME_CPU_DETECT || __OpenBSD__
> + 
> + static int arm_get_cpu_caps(void) {
> +   int flags = 0;
> Index: patches/patch-aom_ports_aarch64_cpudetect_c
> ===================================================================
> RCS file: patches/patch-aom_ports_aarch64_cpudetect_c
> diff -N patches/patch-aom_ports_aarch64_cpudetect_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-aom_ports_aarch64_cpudetect_c       28 Feb 2024 16:06:36 
> -0000
> @@ -0,0 +1,23 @@
> +Allow ARM CPU runtime detection code to build on OpenBSD.
> +
> +Index: aom_ports/aarch64_cpudetect.c
> +--- aom_ports/aarch64_cpudetect.c.orig
> ++++ aom_ports/aarch64_cpudetect.c
> +@@ -15,7 +15,7 @@
> + #include <sys/sysctl.h>
> + #endif
> + 
> +-#if !CONFIG_RUNTIME_CPU_DETECT
> ++#if !CONFIG_RUNTIME_CPU_DETECT || defined(__OpenBSD__)
> + 
> + static int arm_get_cpu_caps(void) {
> +   // This function should actually be a no-op. There is no way to adjust 
> any of
> +@@ -28,7 +28,7 @@ static int arm_get_cpu_caps(void) {
> +   return flags;
> + }
> + 
> +-#elif defined(__APPLE__)  // end !CONFIG_RUNTIME_CPU_DETECT
> ++#elif defined(__APPLE__)  // end !CONFIG_RUNTIME_CPU_DETECT || __OpenBSD__
> + 
> + // sysctlbyname() parameter documentation for instruction set 
> characteristics:
> + // 
> https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics
> Index: patches/patch-aom_ports_arm_cpudetect_c
> ===================================================================
> RCS file: patches/patch-aom_ports_arm_cpudetect_c
> diff -N patches/patch-aom_ports_arm_cpudetect_c
> --- patches/patch-aom_ports_arm_cpudetect_c   29 May 2023 17:52:01 -0000      
> 1.6
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,23 +0,0 @@
> -Allow ARM CPU runtime detection code to build on OpenBSD.
> -
> -Index: aom_ports/arm_cpudetect.c
> ---- aom_ports/arm_cpudetect.c.orig
> -+++ aom_ports/arm_cpudetect.c
> -@@ -38,7 +38,7 @@ static int arm_cpu_env_mask(void) {
> -   return env && *env ? (int)strtol(env, NULL, 0) : ~0;
> - }
> - 
> --#if !CONFIG_RUNTIME_CPU_DETECT || defined(__APPLE__)
> -+#if !CONFIG_RUNTIME_CPU_DETECT || defined(__APPLE__) || defined(__OpenBSD__)
> - 
> - int aom_arm_cpu_caps(void) {
> -   /* This function should actually be a no-op. There is no way to adjust 
> any of
> -@@ -56,7 +56,7 @@ int aom_arm_cpu_caps(void) {
> -   return flags & mask;
> - }
> - 
> --#elif defined(_MSC_VER) /* end !CONFIG_RUNTIME_CPU_DETECT || __APPLE__ */
> -+#elif defined(_MSC_VER) /* end !CONFIG_RUNTIME_CPU_DETECT || __APPLE__ || 
> __OpenBSD__ */
> - /*For GetExceptionCode() and EXCEPTION_ILLEGAL_INSTRUCTION.*/
> - #undef WIN32_LEAN_AND_MEAN
> - #define WIN32_LEAN_AND_MEAN
> Index: patches/patch-build_cmake_aom_configure_cmake
> ===================================================================
> RCS file: patches/patch-build_cmake_aom_configure_cmake
> diff -N patches/patch-build_cmake_aom_configure_cmake
> --- patches/patch-build_cmake_aom_configure_cmake     9 Apr 2023 06:17:17 
> -0000       1.10
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,22 +0,0 @@
> -ARM uses compiler intrinsics, so don't require GNU as.
> -
> -Index: build/cmake/aom_configure.cmake
> ---- build/cmake/aom_configure.cmake.orig
> -+++ build/cmake/aom_configure.cmake
> -@@ -188,16 +188,6 @@ elseif(AOM_TARGET_CPU MATCHES "arm")
> -     endif()
> -   endif()
> -   find_program(as_executable_found ${AS_EXECUTABLE})
> --  if(NOT as_executable_found)
> --    message(
> --      FATAL_ERROR
> --        "Unable to find assembler and optimizations are enabled."
> --        "Searched for ${AS_EXECUTABLE}. Install it, add it to your path, or 
> "
> --        "set the assembler directly by adding -DAS_EXECUTABLE=<assembler 
> path> "
> --        "to your CMake command line."
> --        "To build without optimizations, add -DAOM_TARGET_CPU=generic to 
> your "
> --        "cmake command line.")
> --  endif()
> -   string(STRIP "${AOM_AS_FLAGS}" AOM_AS_FLAGS)
> - endif()
> - 
> Index: patches/patch-third_party_x86inc_x86inc_asm
> ===================================================================
> RCS file: patches/patch-third_party_x86inc_x86inc_asm
> diff -N patches/patch-third_party_x86inc_x86inc_asm
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-third_party_x86inc_x86inc_asm       28 Feb 2024 16:06:36 
> -0000
> @@ -0,0 +1,28 @@
> +Index: third_party/x86inc/x86inc.asm
> +--- third_party/x86inc/x86inc.asm.orig
> ++++ third_party/x86inc/x86inc.asm
> +@@ -52,6 +52,16 @@
> +     %endif
> + %endif
> + 
> ++%if AOM_ARCH_X86_64
> ++%imacro _endbr64 0
> ++    dd 0xfa1e0ff3
> ++%endmacro
> ++%else
> ++%imacro _endbr64 0
> ++; empty
> ++%endmacro
> ++%endif
> ++
> + %define WIN64  0
> + %define UNIX64 0
> + %if AOM_ARCH_X86_64
> +@@ -860,6 +870,7 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg,
> +     %endif
> +     align function_align
> +     %2:
> ++    _endbr64
> +     RESET_MM_PERMUTATION        ; needed for x86-64, also makes disassembly 
> somewhat nicer
> +     %xdefine rstk rsp           ; copy of the original stack pointer, used 
> when greater alignment than the known stack alignment is required
> +     %assign stack_offset 0      ; stack pointer offset relative to the 
> return address
> 
> 

Reply via email to