commit:     fa73e5fd23da1151eadc3e12abe14afbad98152d
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 10 04:06:15 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Aug 10 04:06:15 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fa73e5fd

media-libs/avidemux-core: fix build w/ binutils-2.41

Closes: https://bugs.gentoo.org/911986
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../avidemux-core/avidemux-core-2.8.1-r1.ebuild    |  5 +-
 .../files/avidemux-core-2.8.1-ffmpeg-2.41.patch    | 84 ++++++++++++++++++++++
 2 files changed, 88 insertions(+), 1 deletion(-)

diff --git a/media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild 
b/media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild
index bc742a9bb980..617721f52e31 100644
--- a/media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild
+++ b/media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild
@@ -40,7 +40,10 @@ BDEPEND="
        !system-ffmpeg? ( dev-lang/yasm[nls=] )
 "
 
-PATCHES=( "${FILESDIR}"/avidemux-core-2.7.6-ffmpeg-flags.patch )
+PATCHES=(
+       "${FILESDIR}"/avidemux-core-2.7.6-ffmpeg-flags.patch
+       "${FILESDIR}"/avidemux-core-2.8.1-ffmpeg-2.41.patch
+)
 
 S="${WORKDIR}/avidemux2-${PV}"
 CMAKE_USE_DIR="${S}/${PN/-/_}"

diff --git 
a/media-libs/avidemux-core/files/avidemux-core-2.8.1-ffmpeg-2.41.patch 
b/media-libs/avidemux-core/files/avidemux-core-2.8.1-ffmpeg-2.41.patch
new file mode 100644
index 000000000000..da444e9e1c81
--- /dev/null
+++ b/media-libs/avidemux-core/files/avidemux-core-2.8.1-ffmpeg-2.41.patch
@@ -0,0 +1,84 @@
+diff --git 
a/avidemux_core/ffmpeg_package/patches/libavcodec_mathops.h_binutils_241.patch 
b/avidemux_core/ffmpeg_package/patches/libavcodec_mathops.h_binutils_241.patch
+new file mode 100644
+index 0000000..633b4b6
+--- /dev/null
++++ 
b/avidemux_core/ffmpeg_package/patches/libavcodec_mathops.h_binutils_241.patch
+@@ -0,0 +1,76 @@
++https://bugs.gentoo.org/911582
++https://trac.ffmpeg.org/ticket/10405
++https://git.videolan.org/?p=ffmpeg.git;a=commit;h=25cd95a9dc3510c3cc0d7aad6f9d83f6a1078c7e
++https://sourceware.org/PR30578
++https://gcc.gnu.org/PR108941
++
++From 25cd95a9dc3510c3cc0d7aad6f9d83f6a1078c7e Mon Sep 17 00:00:00 2001
++From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <[email protected]>
++Date: Sun, 16 Jul 2023 18:18:02 +0300
++Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
++ instructions within inline assembly
++
++Fixes assembling with binutil as >= 2.41
++
++Signed-off-by: James Almer <[email protected]>
++(cherry picked from commit effadce6c756247ea8bae32dc13bb3e6f464f0eb)
++--- libavcodec/x86/mathops.h
+++++ libavcodec/x86/mathops.h
++@@ -35,12 +35,20 @@
++ static av_always_inline av_const int MULL(int a, int b, unsigned shift)
++ {
++     int rt, dummy;
+++    if (__builtin_constant_p(shift))
++     __asm__ (
++         "imull %3               \n\t"
++         "shrdl %4, %%edx, %%eax \n\t"
++         :"=a"(rt), "=d"(dummy)
++-        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
+++        :"a"(a), "rm"(b), "i"(shift & 0x1F)
++     );
+++    else
+++        __asm__ (
+++            "imull %3               \n\t"
+++            "shrdl %4, %%edx, %%eax \n\t"
+++            :"=a"(rt), "=d"(dummy)
+++            :"a"(a), "rm"(b), "c"((uint8_t)shift)
+++        );
++     return rt;
++ }
++ 
++@@ -113,19 +121,31 @@ __asm__ volatile(\
++ // avoid +32 for shift optimization (gcc should do that ...)
++ #define NEG_SSR32 NEG_SSR32
++ static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
+++    if (__builtin_constant_p(s))
++     __asm__ ("sarl %1, %0\n\t"
++          : "+r" (a)
++-         : "ic" ((uint8_t)(-s))
+++         : "i" (-s & 0x1F)
++     );
+++    else
+++        __asm__ ("sarl %1, %0\n\t"
+++               : "+r" (a)
+++               : "c" ((uint8_t)(-s))
+++        );
++     return a;
++ }
++ 
++ #define NEG_USR32 NEG_USR32
++ static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
+++    if (__builtin_constant_p(s))
++     __asm__ ("shrl %1, %0\n\t"
++          : "+r" (a)
++-         : "ic" ((uint8_t)(-s))
+++         : "i" (-s & 0x1F)
++     );
+++    else
+++        __asm__ ("shrl %1, %0\n\t"
+++               : "+r" (a)
+++               : "c" ((uint8_t)(-s))
+++        );
++     return a;
++ }
++ 
++-- 
++2.30.2
+-- 
+2.41.0

Reply via email to