[SCM] libav/experimental: Fix compilation when using the --disable-opts parameter. This to help those interested in using a debugger to debug FFmpeg.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:58:18 UTC 2013


The following commit has been merged in the experimental branch:
commit 449659919caa2dec5cb94792b64cf55f6afe0460
Author: Panagiotis Issaris <takis.issaris at uhasselt.be>
Date:   Thu Mar 29 14:20:30 2007 +0000

    Fix compilation when using the --disable-opts parameter. This to help those
    interested in using a debugger to debug FFmpeg.
    
    Original thread:
    Subject: [PATCH] Fix compilation when using --disable-opts
    Date: 2007-03-15 16:58:35 GMT
    
    Originally committed as revision 8549 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/configure b/configure
index 39a570b..6b841d5 100755
--- a/configure
+++ b/configure
@@ -542,6 +542,8 @@ CONFIG_LIST='
     bktr
     dc1394
     dv1394
+    ebp_available
+    ebx_available
     ffmpeg
     ffplay
     ffserver
@@ -1190,6 +1192,10 @@ ar="${cross_prefix}${ar}"
 ranlib="${cross_prefix}${ranlib}"
 strip="${cross_prefix}${strip}"
 
+# Disable core dumps so that intentional execution of broken apps doesn't
+# pollute the current directory.
+ulimit -c 0
+
 # we need to build at least one lib type
 if disabled_all static shared; then
     cat <<EOF
@@ -1391,6 +1397,37 @@ if test "$?" != 0; then
     die "C compiler test failed."
 fi
 
+if test $arch = "x86_32" -o $arch = "x86_64"; then
+    if test "$targetos" = "mingw32" -o "$targetos" = "CYGWIN"; then
+        cat <<EOF
+WARNING: The following test might cause a testapp to crash (intentionally)
+resulting in the appearance of a dialog box. Please click "Don't send" and
+ignore it.
+EOF
+    fi
+
+    # check whether EBP is available on x86
+    # As 'i' is stored on the stack, this program will crash
+    # if the base pointer is used to access it because the
+    # base pointer is cleared in the inline assembly code.
+    check_exec <<EOF && enable ebp_available
+int main(){
+    volatile int i=0;
+    asm volatile (
+        "xorl %%ebp, %%ebp"
+    ::: "%ebp");
+    return i;
+}
+EOF
+
+    # check wether EBX is available on x86
+    check_cc <<EOF && enable ebx_available
+int main(){
+    asm volatile ("":::"%ebx");
+}
+EOF
+fi
+
 # check for assembler specific support
 
 if test $arch = "powerpc"; then
diff --git a/libavcodec/cabac.h b/libavcodec/cabac.h
index fc9fc6d..c96eb0b 100644
--- a/libavcodec/cabac.h
+++ b/libavcodec/cabac.h
@@ -376,7 +376,7 @@ static int av_always_inline get_cabac_inline(CABACContext *c, uint8_t * const st
 #define BYTE        "16"
 #define BYTEEND     "20"
 #endif
-#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
+#if defined(ARCH_X86) && defined(CONFIG_7REGS) && defined(CONFIG_EBX_AVAILABLE)
     int bit;
 
 #ifndef BRANCHLESS_CABAC_DECODER
@@ -680,7 +680,7 @@ static av_always_inline int get_cabac_bypass_sign(CABACContext *c, int val){
 
 //FIXME the x86 code from this file should be moved into i386/h264 or cabac something.c/h (note ill kill you if you move my code away from under my fingers before iam finished with it!)
 //FIXME use some macros to avoid duplicatin get_cabac (cant be done yet as that would make optimization work hard)
-#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
+#if defined(ARCH_X86) && defined(CONFIG_7REGS) && defined(CONFIG_EBX_AVAILABLE)
 static int decode_significance_x86(CABACContext *c, int max_coeff, uint8_t *significant_coeff_ctx_base, int *index){
     void *end= significant_coeff_ctx_base + max_coeff - 1;
     int minusstart= -(int)significant_coeff_ctx_base;
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 4fd8e87..2750173 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -6111,7 +6111,7 @@ static int decode_cabac_residual( H264Context *h, DCTELEM *block, int cat, int n
             index[coeff_count++] = last;\
         }
         const uint8_t *sig_off = significant_coeff_flag_offset_8x8[MB_FIELD];
-#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
+#if defined(ARCH_X86) && defined(CONFIG_7REGS) && defined(CONFIG_EBX_AVAILABLE)
         coeff_count= decode_significance_8x8_x86(CC, significant_coeff_ctx_base, index, sig_off);
     } else {
         coeff_count= decode_significance_x86(CC, max_coeff, significant_coeff_ctx_base, index);
diff --git a/libavutil/x86_cpu.h b/libavutil/x86_cpu.h
index 3d54b2a..67d4cd9 100644
--- a/libavutil/x86_cpu.h
+++ b/libavutil/x86_cpu.h
@@ -57,4 +57,8 @@
 #  define REGSP   esp
 #endif
 
+#if defined(ARCH_X86_64) || (defined(ARCH_X86_32) && defined(CONFIG_EBX_AVAILABLE) && defined(CONFIG_EBP_AVAILABLE))
+#  define CONFIG_7REGS 1
+#endif
+
 #endif /* AVUTIL_X86CPU_H */

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list