[pkg-mad-maintainers] Bug#596936: libmad: FTBFS on armhf (preliminary arch support)

Hector Oron hector.oron at gmail.com
Mon Mar 28 14:36:16 UTC 2011


Hello,

  I have just uploaded a porter NMU to DELAYED/7.

  Applied patch is:


diff -ruN libmad-0.15.1b/debian/changelog libmad-0.15.1b.armhf//debian/changelog
--- libmad-0.15.1b/debian/changelog	2010-09-14 22:40:51.000000000 +0000
+++ libmad-0.15.1b.armhf//debian/changelog	2010-09-14 22:40:25.000000000 +0000
@@ -1,3 +1,14 @@
+libmad (0.15.1b-6) unstable; urgency=low
+
+  Use patches from Ubuntu version:
+  * libmad.thumb.diff: use "adr" instead of "add" to make code ready for
+    thumb2 (LP: #513734)
+  * Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff: fix another
+    ftbfs with thumb2 as "rsc" doesnt exist anymore - thanks to Dave
+    Martin for this patch (LP: #534287).
+
+ -- Konstantinos Margaritis <markos at genesi-usa.com>  Sat, 31 Jul 2010 17:34:27 +0300
+
 libmad (0.15.1b-5) unstable; urgency=low
 
   * gcc-4.4 removed an assembler constraint on mips/mipsel.  Use the new
diff -ruN libmad-0.15.1b/debian/libmad.thumb.diff libmad-0.15.1b.armhf//debian/libmad.thumb.diff
--- libmad-0.15.1b/debian/libmad.thumb.diff	1970-01-01 00:00:00.000000000 +0000
+++ libmad-0.15.1b.armhf//debian/libmad.thumb.diff	2010-09-14 22:40:25.000000000 +0000
@@ -0,0 +1,11 @@
+--- ./imdct_l_arm.S.orig	2010-02-25 13:25:23.000000000 +0100
++++ ./imdct_l_arm.S	2010-02-25 13:27:26.000000000 +0100
+@@ -468,7 +468,7 @@
+ 
+     @----
+ 
+-    add     r2, pc, #(imdct36_long_karray-.-8)  @ r2 = base address of Knn array (PIC safe ?)
++    adr     r2, imdct36_long_karray
+ 
+ 
+ loop:
diff -ruN libmad-0.15.1b/debian/patches/libmad.thumb.diff libmad-0.15.1b.armhf//debian/patches/libmad.thumb.diff
--- libmad-0.15.1b/debian/patches/libmad.thumb.diff	1970-01-01 00:00:00.000000000 +0000
+++ libmad-0.15.1b.armhf//debian/patches/libmad.thumb.diff	2010-09-14 22:40:25.000000000 +0000
@@ -0,0 +1,11 @@
+--- ./imdct_l_arm.S.orig	2010-02-25 13:25:23.000000000 +0100
++++ ./imdct_l_arm.S	2010-02-25 13:27:26.000000000 +0100
+@@ -468,7 +468,7 @@
+ 
+     @----
+ 
+-    add     r2, pc, #(imdct36_long_karray-.-8)  @ r2 = base address of Knn array (PIC safe ?)
++    adr     r2, imdct36_long_karray
+ 
+ 
+ loop:
diff -ruN libmad-0.15.1b/debian/patches/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff libmad-0.15.1b.armhf//debian/patches/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff
--- libmad-0.15.1b/debian/patches/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff	1970-01-01 00:00:00.000000000 +0000
+++ libmad-0.15.1b.armhf//debian/patches/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff	2010-09-14 22:40:25.000000000 +0000
@@ -0,0 +1,71 @@
+diff --git a/fixed.h b/fixed.h
+index 4b58abf..ba4bc26 100644
+--- a/fixed.h
++++ b/fixed.h
+@@ -275,12 +275,25 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
+ 	 : "+r" (lo), "+r" (hi)  \
+ 	 : "%r" (x), "r" (y))
+ 
++#ifdef __thumb__
++/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero
++	operand.  If needed this code can also support Thumb-1 
++	(simply append "s" to the end of the second two instructions). */
++#  define MAD_F_MLN(hi, lo)  \
++    asm ("rsbs	%0, %2, #0\n\t"  \
++	 "sbc	%1, %1, %1\n\t"  \
++	 "sub	%1, %1, %3\n\t"  \
++	 : "=&r" (lo), "=&r" (hi)  \
++	 : "0" (lo), "1" (hi)  \
++	 : "cc")
++#else /* ! __thumb__ */
+ #  define MAD_F_MLN(hi, lo)  \
+     asm ("rsbs	%0, %2, #0\n\t"  \
+ 	 "rsc	%1, %3, #0"  \
+-	 : "=r" (lo), "=r" (hi)  \
++	 : "=&r" (lo), "=r" (hi)  \
+ 	 : "0" (lo), "1" (hi)  \
+ 	 : "cc")
++#endif /* __thumb__ */
+ 
+ #  define mad_f_scale64(hi, lo)  \
+     ({ mad_fixed_t __result;  \
+diff --git a/mad.h b/mad.h
+index 9ef6cc8..130881d 100644
+--- a/mad.h
++++ b/mad.h
+@@ -24,7 +24,7 @@
+ extern "C" {
+ # endif
+ 
+-# define FPM_INTEL
++# define FPM_ARM
+ 
+ 
+ 
+@@ -320,12 +320,25 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
+ 	 : "+r" (lo), "+r" (hi)  \
+ 	 : "%r" (x), "r" (y))
+ 
++#ifdef __thumb__
++/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero
++	operand.  If needed this code can also support Thumb-1 
++	(simply append "s" to the end of the second two instructions). */
++#  define MAD_F_MLN(hi, lo)  \
++    asm ("rsbs	%0, %2, #0\n\t"  \
++	 "sbc	%1, %1, %1\n\t"  \
++	 "sub	%1, %1, %3\n\t"  \
++	 : "=&r" (lo), "=&r" (hi)  \
++	 : "0" (lo), "1" (hi)  \
++	 : "cc")
++#else /* ! __thumb__ */
+ #  define MAD_F_MLN(hi, lo)  \
+     asm ("rsbs	%0, %2, #0\n\t"  \
+ 	 "rsc	%1, %3, #0"  \
+-	 : "=r" (lo), "=r" (hi)  \
++	 : "=&r" (lo), "=r" (hi)  \
+ 	 : "0" (lo), "1" (hi)  \
+ 	 : "cc")
++#endif /* __thumb__ */
+ 
+ #  define mad_f_scale64(hi, lo)  \
+     ({ mad_fixed_t __result;  \
diff -ruN libmad-0.15.1b/debian/patches/series libmad-0.15.1b.armhf//debian/patches/series
--- libmad-0.15.1b/debian/patches/series	2010-09-14 22:40:51.000000000 +0000
+++ libmad-0.15.1b.armhf//debian/patches/series	2010-09-14 22:40:25.000000000 +0000
@@ -1,5 +1,7 @@
 optimize.diff
 amd64-64bit.diff
 frame_length.diff
+Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff
+libmad.thumb.diff
 autoconf
 mips-gcc4.4.diff
diff -ruN libmad-0.15.1b/debian/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff libmad-0.15.1b.armhf//debian/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff
--- libmad-0.15.1b/debian/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff	1970-01-01 00:00:00.000000000 +0000
+++ libmad-0.15.1b.armhf//debian/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff	2010-09-14 22:40:25.000000000 +0000
@@ -0,0 +1,71 @@
+diff --git a/fixed.h b/fixed.h
+index 4b58abf..ba4bc26 100644
+--- a/fixed.h
++++ b/fixed.h
+@@ -275,12 +275,25 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
+ 	 : "+r" (lo), "+r" (hi)  \
+ 	 : "%r" (x), "r" (y))
+ 
++#ifdef __thumb__
++/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero
++	operand.  If needed this code can also support Thumb-1 
++	(simply append "s" to the end of the second two instructions). */
++#  define MAD_F_MLN(hi, lo)  \
++    asm ("rsbs	%0, %2, #0\n\t"  \
++	 "sbc	%1, %1, %1\n\t"  \
++	 "sub	%1, %1, %3\n\t"  \
++	 : "=&r" (lo), "=&r" (hi)  \
++	 : "0" (lo), "1" (hi)  \
++	 : "cc")
++#else /* ! __thumb__ */
+ #  define MAD_F_MLN(hi, lo)  \
+     asm ("rsbs	%0, %2, #0\n\t"  \
+ 	 "rsc	%1, %3, #0"  \
+-	 : "=r" (lo), "=r" (hi)  \
++	 : "=&r" (lo), "=r" (hi)  \
+ 	 : "0" (lo), "1" (hi)  \
+ 	 : "cc")
++#endif /* __thumb__ */
+ 
+ #  define mad_f_scale64(hi, lo)  \
+     ({ mad_fixed_t __result;  \
+diff --git a/mad.h b/mad.h
+index 9ef6cc8..130881d 100644
+--- a/mad.h
++++ b/mad.h
+@@ -24,7 +24,7 @@
+ extern "C" {
+ # endif
+ 
+-# define FPM_INTEL
++# define FPM_ARM
+ 
+ 
+ 
+@@ -320,12 +320,25 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
+ 	 : "+r" (lo), "+r" (hi)  \
+ 	 : "%r" (x), "r" (y))
+ 
++#ifdef __thumb__
++/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero
++	operand.  If needed this code can also support Thumb-1 
++	(simply append "s" to the end of the second two instructions). */
++#  define MAD_F_MLN(hi, lo)  \
++    asm ("rsbs	%0, %2, #0\n\t"  \
++	 "sbc	%1, %1, %1\n\t"  \
++	 "sub	%1, %1, %3\n\t"  \
++	 : "=&r" (lo), "=&r" (hi)  \
++	 : "0" (lo), "1" (hi)  \
++	 : "cc")
++#else /* ! __thumb__ */
+ #  define MAD_F_MLN(hi, lo)  \
+     asm ("rsbs	%0, %2, #0\n\t"  \
+ 	 "rsc	%1, %3, #0"  \
+-	 : "=r" (lo), "=r" (hi)  \
++	 : "=&r" (lo), "=r" (hi)  \
+ 	 : "0" (lo), "1" (hi)  \
+ 	 : "cc")
++#endif /* __thumb__ */
+ 
+ #  define mad_f_scale64(hi, lo)  \
+     ({ mad_fixed_t __result;  \


  Let me know if it is wrong or do yourself an upload before the delayed time
expires.

Best regards,
-- 
 Héctor Orón

"Our Sun unleashes tremendous flares expelling hot gas into the Solar System, which one day will disconnect us."

-- Day DVB-T stop working nicely
Video flare: http://antwrp.gsfc.nasa.gov/apod/ap100510.html





More information about the pkg-mad-maintainers mailing list