[SCM] ffmpeg/master: Fix building with --disable-pic on gcc-4.8.

aca-guest at users.alioth.debian.org aca-guest at users.alioth.debian.org
Sat Jan 21 23:05:11 UTC 2017


The following commit has been merged in the master branch:
commit c64661a812383edfe996c35bd422b86607dd36ef
Author: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
Date:   Sat Jan 21 22:28:51 2017 +0100

    Fix building with --disable-pic on gcc-4.8.

diff --git a/debian/patches/series b/debian/patches/series
index 3a50459..11370f2 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 lavf-chromaprint-Update-for-version-1.4.patch
+swscale-save-ebx-register-when-it-is-not-available.patch
diff --git a/debian/patches/swscale-save-ebx-register-when-it-is-not-available.patch b/debian/patches/swscale-save-ebx-register-when-it-is-not-available.patch
new file mode 100644
index 0000000..d6bab6c
--- /dev/null
+++ b/debian/patches/swscale-save-ebx-register-when-it-is-not-available.patch
@@ -0,0 +1,107 @@
+From: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
+Date: Fri, 16 Dec 2016 02:29:56 +0100
+Subject: swscale: save ebx register when it is not available
+
+Configure checks if the ebx register can be used for asm and it has to
+be saved if and only if this is not the case.
+Without this the build fails when configuring with --toolchain=hardened
+--disable-pic on i386 using gcc 4.8:
+error: PIC register clobbered by '%ebx' in 'asm'
+
+In that case gcc 4.8 reserves the ebx register for the GOT needed for
+PIE, so it can't be used in asm directly.
+
+Reviewed-by: Michael Niedermayer <michael at niedermayer.cc>
+Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
+---
+ libswscale/x86/hscale_fast_bilinear_simd.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/libswscale/x86/hscale_fast_bilinear_simd.c b/libswscale/x86/hscale_fast_bilinear_simd.c
+index 2cba5f0a..60a2cbfc 100644
+--- a/libswscale/x86/hscale_fast_bilinear_simd.c
++++ b/libswscale/x86/hscale_fast_bilinear_simd.c
+@@ -199,7 +199,7 @@ void ff_hyscale_fast_mmxext(SwsContext *c, int16_t *dst,
+ #if ARCH_X86_64
+     uint64_t retsave;
+ #else
+-#if defined(PIC)
++#if !HAVE_EBX_AVAILABLE
+     uint64_t ebxsave;
+ #endif
+ #endif
+@@ -209,7 +209,7 @@ void ff_hyscale_fast_mmxext(SwsContext *c, int16_t *dst,
+         "mov               -8(%%rsp), %%"FF_REG_a"    \n\t"
+         "mov            %%"FF_REG_a", %5              \n\t"  // retsave
+ #else
+-#if defined(PIC)
++#if !HAVE_EBX_AVAILABLE
+         "mov            %%"FF_REG_b", %5              \n\t"  // ebxsave
+ #endif
+ #endif
+@@ -255,7 +255,7 @@ void ff_hyscale_fast_mmxext(SwsContext *c, int16_t *dst,
+         "mov                      %5, %%"FF_REG_a" \n\t"
+         "mov            %%"FF_REG_a", -8(%%rsp)    \n\t"
+ #else
+-#if defined(PIC)
++#if !HAVE_EBX_AVAILABLE
+         "mov                      %5, %%"FF_REG_b" \n\t"
+ #endif
+ #endif
+@@ -264,12 +264,12 @@ void ff_hyscale_fast_mmxext(SwsContext *c, int16_t *dst,
+ #if ARCH_X86_64
+           ,"m"(retsave)
+ #else
+-#if defined(PIC)
++#if !HAVE_EBX_AVAILABLE
+           ,"m" (ebxsave)
+ #endif
+ #endif
+         : "%"FF_REG_a, "%"FF_REG_c, "%"FF_REG_d, "%"FF_REG_S, "%"FF_REG_D
+-#if ARCH_X86_64 || !defined(PIC)
++#if ARCH_X86_64 || HAVE_EBX_AVAILABLE
+          ,"%"FF_REG_b
+ #endif
+     );
+@@ -289,7 +289,7 @@ void ff_hcscale_fast_mmxext(SwsContext *c, int16_t *dst1, int16_t *dst2,
+ #if ARCH_X86_64
+     DECLARE_ALIGNED(8, uint64_t, retsave);
+ #else
+-#if defined(PIC)
++#if !HAVE_EBX_AVAILABLE
+     DECLARE_ALIGNED(8, uint64_t, ebxsave);
+ #endif
+ #endif
+@@ -298,7 +298,7 @@ void ff_hcscale_fast_mmxext(SwsContext *c, int16_t *dst1, int16_t *dst2,
+         "mov          -8(%%rsp), %%"FF_REG_a"    \n\t"
+         "mov       %%"FF_REG_a", %7              \n\t"  // retsave
+ #else
+-#if defined(PIC)
++#if !HAVE_EBX_AVAILABLE
+         "mov       %%"FF_REG_b", %7              \n\t"  // ebxsave
+ #endif
+ #endif
+@@ -332,7 +332,7 @@ void ff_hcscale_fast_mmxext(SwsContext *c, int16_t *dst1, int16_t *dst2,
+         "mov                    %7, %%"FF_REG_a" \n\t"
+         "mov          %%"FF_REG_a", -8(%%rsp)    \n\t"
+ #else
+-#if defined(PIC)
++#if !HAVE_EBX_AVAILABLE
+         "mov %7, %%"FF_REG_b"    \n\t"
+ #endif
+ #endif
+@@ -341,12 +341,12 @@ void ff_hcscale_fast_mmxext(SwsContext *c, int16_t *dst1, int16_t *dst2,
+ #if ARCH_X86_64
+           ,"m"(retsave)
+ #else
+-#if defined(PIC)
++#if !HAVE_EBX_AVAILABLE
+           ,"m" (ebxsave)
+ #endif
+ #endif
+         : "%"FF_REG_a, "%"FF_REG_c, "%"FF_REG_d, "%"FF_REG_S, "%"FF_REG_D
+-#if ARCH_X86_64 || !defined(PIC)
++#if ARCH_X86_64 || HAVE_EBX_AVAILABLE
+          ,"%"FF_REG_b
+ #endif
+     );

-- 
ffmpeg packaging



More information about the pkg-multimedia-commits mailing list