~ruther/guix-local

dd863f1f39858bf9d3f1a9de4b4eccc8d3f75d62 — Mark H Weaver 12 years ago 46acd05
gnu: libmad: Fix MIPS assembler code to work with new GCC.

* gnu/packages/patches/libmad-mips-newgcc.patch: New file.
* gnu/packages/mp3.scm (libmad): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
3 files changed, 19 insertions(+), 1 deletions(-)

M gnu-system.am
M gnu/packages/mp3.scm
A gnu/packages/patches/libmad-mips-newgcc.patch
M gnu-system.am => gnu-system.am +1 -0
@@ 240,6 240,7 @@ dist_patch_DATA =						\
  gnu/packages/patches/hop-bigloo-4.0b.patch			\
  gnu/packages/patches/libevent-dns-tests.patch			\
  gnu/packages/patches/libffi-mips-n32-fix.patch		\
  gnu/packages/patches/libmad-mips-newgcc.patch			\
  gnu/packages/patches/libtheora-config-guess.patch		\
  gnu/packages/patches/libtool-skip-tests.patch			\
  gnu/packages/patches/libtool-skip-tests-for-mips.patch	\

M gnu/packages/mp3.scm => gnu/packages/mp3.scm +2 -1
@@ 44,7 44,8 @@
                                version ".tar.gz"))
            (sha256
             (base32
              "14460zhacxhswnzb36qfpd1f2wbk10qvksvm6wyq5hpvdgnw7ymv"))))
              "14460zhacxhswnzb36qfpd1f2wbk10qvksvm6wyq5hpvdgnw7ymv"))
            (patches (list (search-patch "libmad-mips-newgcc.patch")))))
   (build-system gnu-build-system)
   (arguments
    `(#:phases

A gnu/packages/patches/libmad-mips-newgcc.patch => gnu/packages/patches/libmad-mips-newgcc.patch +16 -0
@@ 0,0 1,16 @@
Fix MIPS assembly code to work with newer GCC, where the "=h"
constraint is no longer supported.

--- libmad/fixed.h.orig	2004-02-16 21:02:03.000000000 -0500
+++ libmad/fixed.h	2011-10-29 18:47:21.000000000 -0400
@@ -304,8 +304,8 @@
  * significant bit depends on OPT_ACCURACY via mad_f_scale64().
  */
 #  define MAD_F_MLX(hi, lo, x, y)  \
-    asm ("mult	%2,%3"  \
-	 : "=l" (lo), "=h" (hi)  \
+    asm ("mult	%2,%3\n\tmfhi  %1"  \
+	 : "=l" (lo), "=r" (hi)  \
 	 : "%r" (x), "r" (y))
 
 # if defined(HAVE_MADD_ASM)