SOURCES: mplayer-gcc4.patch (NEW) - build fixes tested on gcc-4.1.

pluto pluto at pld-linux.org
Sat Feb 18 17:26:49 CET 2006


Author: pluto                        Date: Sat Feb 18 16:26:49 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- build fixes tested on gcc-4.1.

---- Files affected:
SOURCES:
   mplayer-gcc4.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/mplayer-gcc4.patch
diff -u /dev/null SOURCES/mplayer-gcc4.patch:1.1
--- /dev/null	Sat Feb 18 17:26:49 2006
+++ SOURCES/mplayer-gcc4.patch	Sat Feb 18 17:26:44 2006
@@ -0,0 +1,237 @@
+diff -uNr MPlayer-1.0pre7try2.orig/configure MPlayer-1.0pre7try2/configure
+--- MPlayer-1.0pre7try2.orig/configure	2006-02-14 12:43:09.000000000 +0100
++++ MPlayer-1.0pre7try2/configure	2006-02-14 12:44:16.978479750 +0100
+@@ -605,7 +605,7 @@
+       cc_version="v. ?.??, bad"
+       cc_verc_fail=yes
+       ;;
+-    2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9])
++    2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9]|4.*)
+       _cc_major=`echo $cc_version | cut -d '.' -f 1`
+       _cc_minor=`echo $cc_version | cut -d '.' -f 2`
+       _cc_mini=`echo $cc_version | cut -d '.' -f 3`
+diff -uNr MPlayer-1.0pre7try2.orig/liba52/imdct.c MPlayer-1.0pre7try2/liba52/imdct.c
+--- MPlayer-1.0pre7try2.orig/liba52/imdct.c	2005-03-23 00:27:18.000000000 +0100
++++ MPlayer-1.0pre7try2/liba52/imdct.c	2006-02-14 12:44:56.268935250 +0100
+@@ -937,7 +937,8 @@
+     /* 4-7. iterations */
+     for (m=3; m < 7; m++) {
+ 	two_m = (1 << m);
+-	two_m_plus_one = two_m<<1;
++	int two_m_plus_four=two_m<<4;
++	complex_t* buf_plus_128=buf+128;
+ 	asm volatile(
+ 		"movl %0, %%esi				\n\t"
+ 		".balign 16				\n\t"
+@@ -963,7 +964,7 @@
+ 		"addl %2, %%esi				\n\t"
+ 		"cmpl %1, %%esi				\n\t"
+ 		" jb 1b					\n\t"
+-		:: "g" (buf), "m" (buf+128), "m" (two_m_plus_one<<3), "r" (two_m<<3),
++		:: "g" (buf), "m" (buf_plus_128), "m" (two_m_plus_four), "r" (two_m<<3),
+ 		   "r" (sseW[m])
+ 		: "%esi", "%edi", "%edx"
+ 	);
+diff -uNr MPlayer-1.0pre7try2.orig/libavcodec/libpostproc/postprocess_template.c MPlayer-1.0pre7try2/libavcodec/libpostproc/postprocess_template.c
+--- MPlayer-1.0pre7try2.orig/libavcodec/libpostproc/postprocess_template.c	2005-04-16 22:41:13.000000000 +0200
++++ MPlayer-1.0pre7try2/libavcodec/libpostproc/postprocess_template.c	2006-02-14 12:45:09.713775500 +0100
+@@ -2648,6 +2648,8 @@
+ static always_inline void RENAME(do_a_deblock)(uint8_t *src, int step, int stride, PPContext *c){
+ 	int64_t dc_mask, eq_mask;
+ 	int64_t sums[10*8*2];
++	int64_t dc_and_eq_mask;
++
+ 	src+= step*3; // src points to begin of the 8x8 Block
+ //START_TIMER
+ asm volatile(
+@@ -2754,8 +2756,9 @@
+ 		: "r" (src), "r" ((long)step), "m" (c->pQPb), "m"(c->ppMode.flatnessThreshold)
+ 		: "%"REG_a
+ 		);
++	dc_and_eq_mask=dc_mask & eq_mask;
+ 
+-	if(dc_mask & eq_mask){
++	if(dc_and_eq_mask){
+ 		long offset= -8*step;
+ 		int64_t *temp_sums= sums;
+ 
+@@ -2930,7 +2933,7 @@
+ 		" js 1b						\n\t"
+ 
+ 		: "+r"(offset), "+r"(temp_sums)
+-		: "r" ((long)step), "r"(src - offset), "m"(dc_mask & eq_mask)
++		: "r" ((long)step), "r"(src - offset), "m"(dc_and_eq_mask)
+ 		);
+ 	}else
+ 		src+= step; // src points to begin of the 8x8 Block
+@@ -3493,7 +3496,7 @@
+ 				"prefetchnta 32(%%"REG_a", %0)	\n\t"
+ 				"prefetcht0 32(%%"REG_d", %2)	\n\t"
+ 			:: "r" (srcBlock), "r" ((long)srcStride), "r" (dstBlock), "r" ((long)dstStride),
+-			"m" ((long)x), "m" ((long)copyAhead)
++			"g" ((long)x), "g" ((long)copyAhead)
+ 			: "%"REG_a, "%"REG_d
+ 			);
+ 
+@@ -3639,7 +3642,7 @@
+ 				"prefetchnta 32(%%"REG_a", %0)	\n\t"
+ 				"prefetcht0 32(%%"REG_d", %2)	\n\t"
+ 			:: "r" (srcBlock), "r" ((long)srcStride), "r" (dstBlock), "r" ((long)dstStride),
+-			"m" ((long)x), "m" ((long)copyAhead)
++			"g" ((long)x), "g" ((long)copyAhead)
+ 			: "%"REG_a, "%"REG_d
+ 			);
+ 
+diff -uNr MPlayer-1.0pre7try2.orig/libmpdemux/frequencies.h MPlayer-1.0pre7try2/libmpdemux/frequencies.h
+--- MPlayer-1.0pre7try2.orig/libmpdemux/frequencies.h	2001-11-16 23:06:48.000000000 +0100
++++ MPlayer-1.0pre7try2/libmpdemux/frequencies.h	2006-02-14 12:44:16.978479750 +0100
+@@ -104,7 +104,6 @@
+ /* --------------------------------------------------------------------- */
+ 
+ extern struct CHANLISTS   chanlists[];
+-extern struct STRTAB chanlist_names[];
+ 
+ extern int                chantab;
+ extern struct CHANLIST   *chanlist;
+diff -uNr MPlayer-1.0pre7try2.orig/libvo/aclib_template.c MPlayer-1.0pre7try2/libvo/aclib_template.c
+--- MPlayer-1.0pre7try2.orig/libvo/aclib_template.c	2005-01-21 22:11:35.000000000 +0100
++++ MPlayer-1.0pre7try2/libvo/aclib_template.c	2006-02-14 12:44:56.272935500 +0100
+@@ -249,8 +249,8 @@
+ 		MOVNTQ" %%mm6, 48(%1)\n"
+ 		MOVNTQ" %%mm7, 56(%1)\n"
+ 		:: "r" (from), "r" (to) : "memory");
+-		((const unsigned char *)from)+=64;
+-		((unsigned char *)to)+=64;
++		from=((const unsigned char *)from)+64;
++		to=((unsigned char *)to)+64;
+ 	}
+ 
+ //	printf(" %d %d\n", (int)from&1023, (int)to&1023);
+@@ -338,8 +338,8 @@
+ 		MOVNTQ" %%mm6, 48(%1)\n"
+ 		MOVNTQ" %%mm7, 56(%1)\n"
+ 		:: "r" (from), "r" (to) : "memory");
+-		((const unsigned char *)from)+=64;
+-		((unsigned char *)to)+=64;
++		from=((const unsigned char *)from)+64;
++		to=((unsigned char *)to)+64;
+ 	}
+ 
+ #endif /* Have SSE */
+diff -uNr MPlayer-1.0pre7try2.orig/mmx.h MPlayer-1.0pre7try2/mmx.h
+--- MPlayer-1.0pre7try2.orig/mmx.h	2001-10-28 12:47:21.000000000 +0100
++++ MPlayer-1.0pre7try2/mmx.h	2006-02-14 12:44:16.978479750 +0100
+@@ -353,11 +353,11 @@
+ #define	mmx_m2r(op, mem, reg) \
+ 	__asm__ __volatile__ (#op " %0, %%" #reg \
+ 			      : /* nothing */ \
+-			      : "X" (mem))
++			      : "m" (mem))
+ 
+ #define	mmx_r2m(op, reg, mem) \
+ 	__asm__ __volatile__ (#op " %%" #reg ", %0" \
+-			      : "=X" (mem) \
++			      : "=m" (mem) \
+ 			      : /* nothing */ )
+ 
+ #define	mmx_r2r(op, regs, regd) \
+@@ -367,8 +367,8 @@
+ 	__asm__ __volatile__ ("movq %0, %%mm0\n\t" \
+ 			      #op " %1, %%mm0\n\t" \
+ 			      "movq %%mm0, %0" \
+-			      : "=X" (memd) \
+-			      : "X" (mems))
++			      : "=m" (memd) \
++			      : "m" (mems))
+ 
+ #endif
+ 
+diff -uNr MPlayer-1.0pre7try2.orig/postproc/swscale_template.c MPlayer-1.0pre7try2/postproc/swscale_template.c
+--- MPlayer-1.0pre7try2.orig/postproc/swscale_template.c	2005-02-17 00:47:00.000000000 +0100
++++ MPlayer-1.0pre7try2/postproc/swscale_template.c	2006-02-14 12:45:09.717775750 +0100
+@@ -765,14 +765,14 @@
+ 		asm volatile(
+ 				YSCALEYUV2YV12X(0, CHR_MMX_FILTER_OFFSET)
+ 				:: "r" (&c->redDither),
+-				"r" (uDest), "m" ((long)chrDstW)
++				"r" (uDest), "p" ((long)chrDstW)
+ 				: "%"REG_a, "%"REG_d, "%"REG_S
+ 			);
+ 
+ 		asm volatile(
+ 				YSCALEYUV2YV12X(4096, CHR_MMX_FILTER_OFFSET)
+ 				:: "r" (&c->redDither),
+-				"r" (vDest), "m" ((long)chrDstW)
++				"r" (vDest), "p" ((long)chrDstW)
+ 				: "%"REG_a, "%"REG_d, "%"REG_S
+ 			);
+ 	}
+@@ -780,7 +780,7 @@
+ 	asm volatile(
+ 			YSCALEYUV2YV12X(0, LUM_MMX_FILTER_OFFSET)
+ 			:: "r" (&c->redDither),
+-			   "r" (dest), "m" ((long)dstW)
++			   "r" (dest), "p" ((long)dstW)
+ 			: "%"REG_a, "%"REG_d, "%"REG_S
+ 		);
+ #else
+@@ -2136,6 +2136,7 @@
+ 	else
+ 	{
+ 		long counter= -2*dstW;
++		uint8_t* ptr=src+filterSize;
+ //		filter-= counter*filterSize/2;
+ 		filterPos-= counter/2;
+ 		dst-= counter/2;
+@@ -2177,7 +2178,7 @@
+ 			" jnc 1b			\n\t"
+ 
+ 			: "+r" (counter), "+r" (filter)
+-			: "m" (filterPos), "m" (dst), "m"(src+filterSize),
++			: "m" (filterPos), "m" (dst), "m"(ptr),
+ 			  "m" (src), "r" ((long)filterSize*2)
+ 			: "%"REG_b, "%"REG_a, "%"REG_c
+ 		);
+@@ -2320,6 +2321,8 @@
+ 	{
+ #endif
+ 	//NO MMX just normal asm ...
++	  int xInc_hi=xInc>>16;
++	  int xInc_lo=xInc&0xffff;
+ 	asm volatile(
+ 		"xor %%"REG_a", %%"REG_a"	\n\t" // i
+ 		"xor %%"REG_b", %%"REG_b"	\n\t" // xx
+@@ -2356,7 +2359,7 @@
+ 		" jb 1b				\n\t"
+ 
+ 
+-		:: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc>>16), "m" (xInc&0xFFFF)
++		:: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc_hi), "m" (xInc_lo)
+ 		: "%"REG_a, "%"REG_b, "%ecx", "%"REG_D, "%esi"
+ 		);
+ #ifdef HAVE_MMX2
+@@ -2515,6 +2518,8 @@
+ 	else
+ 	{
+ #endif
++	  int xInc_hi=xInc>>16;
++	  int xInc_lo=xInc&0xffff;
+ 	asm volatile(
+ 		"xor %%"REG_a", %%"REG_a"	\n\t" // i
+ 		"xor %%"REG_b", %%"REG_b"		\n\t" // xx
+@@ -2547,8 +2552,13 @@
+ 		"add $1, %%"REG_a"		\n\t"
+ 		"cmp %2, %%"REG_a"		\n\t"
+ 		" jb 1b				\n\t"
+-
+-		:: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" ((long)(xInc>>16)), "m" ((xInc&0xFFFF)),
++/* GCC-3.3 makes MPlayer crash on IA-32 machines when using "g" operand here,
++   which is needed to support GCC-4.0 */
++#if defined(ARCH_X86_64) && ((__GNUC__ > 3) || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4))
++		:: "m" (src1), "m" (dst), "g" ((long)dstWidth), "m" (xInc_hi), "m" (xInc_lo),
++#else
++		:: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" ((long)(xInc_hi)), "m" ((xInc_lo)),
++#endif
+ 		"r" (src2)
+ 		: "%"REG_a, "%"REG_b, "%ecx", "%"REG_D, "%esi"
+ 		);
================================================================


More information about the pld-cvs-commit mailing list