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.
This commit is contained in:
Mark H Weaver 2013-11-01 00:15:16 -04:00
parent 46acd05401
commit dd863f1f39
3 changed files with 19 additions and 1 deletions

View File

@ -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 \

View File

@ -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

View File

@ -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)