make[1]: Entering directory `/var/tmp/portage/flac-1.1.1/work/flac-1.1.1/src/lib FLAC/ppc' /bin/sh ../../../libtool --tag=CC --mode=compile sh ../../../strip_non_asm_libto ol_args.sh as -force_cpusubtype_ALL -o lpc_asm.lo lpc_asm.s sh ../../../strip_non_asm_libtool_args.sh as -force_cpusubtype_ALL lpc_asm.s - fPIC -o .libs/lpc_asm.o as -force_cpusubtype_ALL lpc_asm.s -o .libs/lpc_asm.o lpc_asm.s: Assembler messages: lpc_asm.s:1: Error: junk at end of line, first unrecognized character is `l' lpc_asm.s:2: Error: junk at end of line, first unrecognized character is `C' lpc_asm.s:4: Error: junk at end of line, first unrecognized character is `R' lpc_asm.s:5: Error: junk at end of line, first unrecognized character is `m' lpc_asm.s:6: Error: junk at end of line, first unrecognized character is `a' lpc_asm.s:8: Error: junk at end of line, first unrecognized character is `-' lpc_asm.s:9: Error: junk at end of line, first unrecognized character is `n' lpc_asm.s:11: Error: junk at end of line, first unrecognized character is `-' lpc_asm.s:12: Error: junk at end of line, first unrecognized character is `n' lpc_asm.s:13: Error: junk at end of line, first unrecognized character is `d' lpc_asm.s:15: Error: junk at end of line, first unrecognized character is `-' lpc_asm.s:16: Error: junk at end of line, first unrecognized character is `c' lpc_asm.s:17: Error: junk at end of line, first unrecognized character is `t' lpc_asm.s:19: Error: junk at end of line, first unrecognized character is `T' lpc_asm.s:20: Error: junk at end of line, first unrecognized character is ``' lpc_asm.s:21: Error: junk at end of line, first unrecognized character is `L' lpc_asm.s:22: Error: junk at end of line, first unrecognized character is `A' lpc_asm.s:23: Error: junk at end of line, first unrecognized character is `C' lpc_asm.s:24: Error: junk at end of line, first unrecognized character is `E' lpc_asm.s:25: Error: junk at end of line, first unrecognized character is `P' lpc_asm.s:25: Error: Unrecognized opcode: `loss' lpc_asm.s:26: Error: junk at end of line, first unrecognized character is `P' lpc_asm.s:26: Error: syntax error; found `I' but expected `,' lpc_asm.s:26: Error: junk at end of line: `INTERRUPTION) HOWEVER CAUSED AND ON A NY THEORY OF' lpc_asm.s:27: Error: junk at end of line, first unrecognized character is `L' lpc_asm.s:28: Error: junk at end of line, first unrecognized character is `N' lpc_asm.s:29: Error: junk at end of line, first unrecognized character is `S' lpc_asm.s:37: Error: Unrecognized opcode: `residual[]' lpc_asm.s:38: Error: Unrecognized opcode: `data_len' lpc_asm.s:39: Error: Unrecognized opcode: `qlp_coeff[]' lpc_asm.s:40: Error: Unrecognized opcode: `order' lpc_asm.s:41: Error: Unrecognized opcode: `lp_quantization' lpc_asm.s:42: Error: Unrecognized opcode: `data[]' lpc_asm.s:44: Error: Unrecognized opcode: `see' lpc_asm.s:45: Error: Unrecognized opcode: `these' lpc_asm.s:46: Error: Unrecognized opcode: `bps<=15' lpc_asm.s:48: Error: Unrecognized opcode: `these' lpc_asm.s:48: Error: Unrecognized opcode: `the' lpc_asm.s:49: Error: junk at end of line, first unrecognized character is `3' lpc_asm.s:50: Error: Unrecognized opcode: `coefficients' lpc_asm.s:51: Error: Unrecognized opcode: `has' lpc_asm.s:53: Error: Unrecognized opcode: `i' lpc_asm.s:54: Error: syntax error; found `m' but expected `,' lpc_asm.s:54: Error: junk at end of line: `may be a somewhat more clever way to do the outer loop' lpc_asm.s:56: Error: Unrecognized opcode: `the' lpc_asm.s:56: Error: Unrecognized opcode: `i' lpc_asm.s:57: Error: Unrecognized opcode: `this' lpc_asm.s:63: Error: Unrecognized opcode: `for' lpc_asm.s:65: Error: Unrecognized opcode: `adjust' lpc_asm.s:69: Error: Unrecognized opcode: `cache' lpc_asm.s:70: Error: syntax error; found `(' but expected `,' lpc_asm.s:70: Error: junk at end of line: `(0xfffffc00)' lpc_asm.s:71: Error: syntax error; found `(' but expected `,' lpc_asm.s:71: Error: junk at end of line: `(0xfffffc00)' lpc_asm.s:72: Error: Unrecognized opcode: `declare' lpc_asm.s:74: Error: Unrecognized opcode: `i<data_len' lpc_asm.s:77: Error: Unrecognized opcode: `load' lpc_asm.s:79: Error: Unrecognized opcode: `data%4' lpc_asm.s:81: Error: symbol `r31' is already defined lpc_asm.s:81: Error: junk at end of line, first unrecognized character is `4' lpc_asm.s:82: Error: Unrecognized opcode: `convert' lpc_asm.s:87: Error: Unrecognized opcode: `mask' lpc_asm.s:97: Error: Unrecognized opcode: `reversal' lpc_asm.s:100: Error: Unrecognized opcode: `coefficient' lpc_asm.s:101: Error: symbol `v17' is already defined lpc_asm.s:101: Error: Unrecognized opcode: `reversal' lpc_asm.s:104: Error: Unrecognized opcode: `history' lpc_asm.s:117: Error: syntax error; found `(' but expected `,' lpc_asm.s:117: Error: junk at end of line: `(L1307)' lpc_asm.s:118: Error: syntax error; found `(' but expected `,' lpc_asm.s:118: Error: junk at end of line: `(L1307)' lpc_asm.s:131: Error: syntax error; found `(' but expected `,' lpc_asm.s:131: Error: junk at end of line: `(L1306)' lpc_asm.s:132: Error: syntax error; found `(' but expected `,' lpc_asm.s:132: Error: junk at end of line: `(L1306)' lpc_asm.s:145: Error: syntax error; found `(' but expected `,' lpc_asm.s:145: Error: junk at end of line: `(L1305)' lpc_asm.s:146: Error: syntax error; found `(' but expected `,' lpc_asm.s:146: Error: junk at end of line: `(L1305)' lpc_asm.s:159: Error: syntax error; found `(' but expected `,' lpc_asm.s:159: Error: junk at end of line: `(L1304)' lpc_asm.s:160: Error: syntax error; found `(' but expected `,' lpc_asm.s:160: Error: junk at end of line: `(L1304)' lpc_asm.s:173: Error: syntax error; found `(' but expected `,' lpc_asm.s:173: Error: junk at end of line: `(L1303)' lpc_asm.s:174: Error: syntax error; found `(' but expected `,' lpc_asm.s:174: Error: junk at end of line: `(L1303)' lpc_asm.s:187: Error: syntax error; found `(' but expected `,' lpc_asm.s:187: Error: junk at end of line: `(L1302)' lpc_asm.s:188: Error: syntax error; found `(' but expected `,' lpc_asm.s:188: Error: junk at end of line: `(L1302)' lpc_asm.s:201: Error: syntax error; found `(' but expected `,' lpc_asm.s:201: Error: junk at end of line: `(L1301)' lpc_asm.s:202: Error: syntax error; found `(' but expected `,' lpc_asm.s:202: Error: junk at end of line: `(L1301)' lpc_asm.s:213: Error: syntax error; found `(' but expected `,' lpc_asm.s:213: Error: junk at end of line: `(L1300)' lpc_asm.s:214: Error: syntax error; found `(' but expected `,' lpc_asm.s:214: Error: junk at end of line: `(L1300)' lpc_asm.s:219: Error: Unrecognized opcode: `set' lpc_asm.s:220: Error: symbol `v16' is already defined lpc_asm.s:220: Error: Unrecognized opcode: `zero' lpc_asm.s:223: Error: symbol `v17' is already defined lpc_asm.s:223: Error: Unrecognized opcode: `result' lpc_asm.s:224: Error: symbol `v18' is already defined lpc_asm.s:224: Error: Unrecognized opcode: `residual' lpc_asm.s:228: Error: Unrecognized opcode: `lp_quantization' lpc_asm.s:231: Error: Unrecognized opcode: `sum' lpc_asm.s:236: Error: Unrecognized opcode: `increment' lpc_asm.s:270: Error: Unrecognized opcode: `v20[3]:' lpc_asm.s:271: Error: Unrecognized opcode: `v20[3]:' lpc_asm.s:273: Error: Unrecognized opcode: `v21[n]:' lpc_asm.s:274: Error: Unrecognized opcode: `v21[3]:' lpc_asm.s:275: Error: Unrecognized opcode: `v20[3]:' lpc_asm.s:276: Error: Unrecognized opcode: `increment' lpc_asm.s:278: Error: Unrecognized opcode: `v21[n]:' lpc_asm.s:279: Error: Unrecognized opcode: `increment' lpc_asm.s:283: Error: Unrecognized opcode: `insert' lpc_asm.s:287: Error: Unrecognized opcode: `i<data_len' lpc_asm.s:291: Error: Unrecognized opcode: `restore' lpc_asm.s:296: Error: symbol `r3' is already defined lpc_asm.s:296: Error: Unrecognized opcode: `residual[]' lpc_asm.s:297: Error: symbol `r4' is already defined lpc_asm.s:297: Error: Unrecognized opcode: `data_len' lpc_asm.s:298: Error: symbol `r5' is already defined lpc_asm.s:298: Error: Unrecognized opcode: `qlp_coeff[]' lpc_asm.s:299: Error: symbol `r6' is already defined lpc_asm.s:299: Error: Unrecognized opcode: `order' lpc_asm.s:300: Error: symbol `r7' is already defined lpc_asm.s:300: Error: Unrecognized opcode: `lp_quantization' lpc_asm.s:301: Error: symbol `r8' is already defined lpc_asm.s:301: Error: Unrecognized opcode: `data[]' lpc_asm.s:303: Error: Unrecognized opcode: `see' lpc_asm.s:304: Error: Unrecognized opcode: `this' lpc_asm.s:304: Error: Unrecognized opcode: `it' lpc_asm.s:305: Error: Unrecognized opcode: `save' lpc_asm.s:306: Error: Unrecognized opcode: `instruction' lpc_asm.s:312: Error: Unrecognized opcode: `for' lpc_asm.s:314: Error: Unrecognized opcode: `adjust' lpc_asm.s:318: Error: Unrecognized opcode: `cache' lpc_asm.s:319: Error: syntax error; found `(' but expected `,' lpc_asm.s:319: Error: junk at end of line: `(0xffc00000)' lpc_asm.s:320: Error: syntax error; found `(' but expected `,' lpc_asm.s:320: Error: junk at end of line: `(0xffc00000)' lpc_asm.s:321: Error: Unrecognized opcode: `declare' lpc_asm.s:323: Error: Unrecognized opcode: `i<data_len' lpc_asm.s:326: Error: Unrecognized opcode: `load' lpc_asm.s:328: Error: symbol `r31' is already defined lpc_asm.s:328: Error: Unrecognized opcode: `data%4' lpc_asm.s:330: Error: symbol `r31' is already defined lpc_asm.s:330: Error: junk at end of line, first unrecognized character is `4' lpc_asm.s:331: Error: Unrecognized opcode: `convert' lpc_asm.s:336: Error: Unrecognized opcode: `mask' lpc_asm.s:346: Error: symbol `v0' is already defined lpc_asm.s:346: Error: Unrecognized opcode: `reversal' lpc_asm.s:349: Error: Unrecognized opcode: `coefficient' lpc_asm.s:350: Error: symbol `v5' is already defined lpc_asm.s:350: Error: Unrecognized opcode: `reversal' lpc_asm.s:353: Error: Unrecognized opcode: `history' lpc_asm.s:366: Error: syntax error; found `(' but expected `,' lpc_asm.s:366: Error: junk at end of line: `(L2301)' lpc_asm.s:367: Error: syntax error; found `(' but expected `,' lpc_asm.s:367: Error: junk at end of line: `(L2301)' lpc_asm.s:378: Error: syntax error; found `(' but expected `,' lpc_asm.s:378: Error: junk at end of line: `(L2300)' lpc_asm.s:379: Error: syntax error; found `(' but expected `,' lpc_asm.s:379: Error: junk at end of line: `(L2300)' lpc_asm.s:384: Error: Unrecognized opcode: `set' lpc_asm.s:385: Error: symbol `v4' is already defined lpc_asm.s:385: Error: Unrecognized opcode: `zero' lpc_asm.s:388: Error: symbol `v5' is already defined lpc_asm.s:388: Error: Unrecognized opcode: `result' lpc_asm.s:389: Error: symbol `v6' is already defined lpc_asm.s:389: Error: Unrecognized opcode: `residual' lpc_asm.s:393: Error: Unrecognized opcode: `lp_quantization' lpc_asm.s:396: Error: Unrecognized opcode: `sum' lpc_asm.s:405: Error: Unrecognized opcode: `v8[3]:' lpc_asm.s:406: Error: Unrecognized opcode: `v8[3]:' lpc_asm.s:408: Error: Unrecognized opcode: `v9[n]:' lpc_asm.s:409: Error: Unrecognized opcode: `v9[3]:' lpc_asm.s:410: Error: Unrecognized opcode: `v8[3]:' lpc_asm.s:411: Error: Unrecognized opcode: `increment' lpc_asm.s:413: Error: Unrecognized opcode: `v9[n]:' lpc_asm.s:414: Error: Unrecognized opcode: `increment' lpc_asm.s:418: Error: Unrecognized opcode: `insert' lpc_asm.s:422: Error: Unrecognized opcode: `i<data_len' lpc_asm.s:426: Error: Unrecognized opcode: `restore' make[1]: *** [lpc_asm.lo] Error 1 make[1]: Leaving directory `/var/tmp/portage/flac-1.1.1/work/flac-1.1.1/src/libF LAC/ppc' make: *** [all-recursive] Error 1 ------------------- The error looks as if the assembler doesn't recognise ";" as a comment sign, but even after removing all comments from the file it doesn' compile... Reproducible: Always Steps to Reproduce: 1.emerge flac 2. 3. Actual Results: compile error, because the assembler doesn't like lpc_asm.s Expected Results: compile. Portage 2.0.51_rc7 (default-ppc-2004.2, gcc-3.4.1, glibc-2.3.4.20040808-r0, 2.6.8-gentoo-r4 ppc) ================================================================= System uname: 2.6.8-gentoo-r4 ppc 7447/7457, altivec supported Gentoo Base System version 1.5.3 distcc 2.17 powerpc-unknown-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] ccache version 2.3 [enabled] Autoconf: sys-devel/autoconf-2.59-r4 Automake: sys-devel/automake-1.8.5-r1 Binutils: sys-devel/binutils-2.15.90.0.3-r3 Headers: sys-kernel/linux-headers-2.4.22 Libtools: sys-devel/libtool-1.5.2-r5 ACCEPT_KEYWORDS="ppc ~ppc" AUTOCLEAN="yes" CFLAGS="-O2 -mcpu=7450 -maltivec -mabi=altivec -mpowerpc-gfxopt -pipe -fomit-frame-pointer" CHOST="powerpc-unknown-linux-gnu" COMPILER="" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.3/share/config:/usr/kde/3.3/env:/usr/kde/3.3/shutdown /usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-O2 -mcpu=7450 -maltivec -mabi=altivec -mpowerpc-gfxopt -pipe -fomit-frame-pointer" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs ccache distlocks userpriv vfatdistfiles" GENTOO_MIRRORS="ftp://ftp2.jetstreamgames.co.nz/pub/gentoo ftp://planetmirror.com/pub/gentoo/ ftp://gentoo.ccccom.com ftp://mirror.pacific.net.au/linux/Gentoo http://mirror.pacific.net.au/linux/Gentoo http://gentoo.ccccom.com http://open-systems.ufl.edu/mirrors/gentoo http://www.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.au.gentoo.org/gentoo-portage" USE="X aalib alsa altivec apache2 berkdb bitmap-fonts bonobo caps cdr cups dga directfb dvd dvdr encode esd f77 fbcon fbdev fftw firefox flac gcj gd-external gdbm gif gimpprint ginac gnome gnome-libs gnome2 gpg gpm gtk gtk2 gtkhtml guile imlib jack-audio-connection-kit jack-tmpfs jpeg kde ladcca ldap libwww lyx mad motif mozcalendar mozilla mozilla-firefox moznocompose moznoirc moznomail mozsvg mozxmlterm mysql ncurses nls no_wxgtk1 objc octave oggvorbis opengl oss pam perl php pic plotutils png ppc prelink python qhull qt readline rtc scanner sdl slang ssl tcltk tcpd tetex tiff truetype unicode usb usb-audio utf8 xml xml2 xmms xorg xprint xv xvid video_cards_radeon linguas_en_GB linguas_de"
The asm file is completely non conformant to the gnu as for ppc. I'll try to fix it later, in the mean time flac-1.1.1 is masked.
easy things to fix: 1 hi16 and lo16 should be redefined properly 2 the comment token should be '#' not ';' 3 Make sure it works on linux AND macosx!
Created attachment 42018 [details, diff] patch to allow flac-1.1.1 to compile on ppc Okay, this patch lets it compile, but the code is not actually being used at this stage, because the Altivec detection code is only for Darwin. This works with Gentoo PPC toolchain, probably breaks OS X.
Created attachment 42019 [details, diff] patch to add Altivec detection for non-Darwin based operating systems This one adds the ability to detect Altivec. This code shouldn't break anything on OS X, so if it looks okay, I suggest you pass it upstream. In the quick tests I did, I only noticed a 10% speed improvement with Altivec on. Could someone tell me if they get more than this?
Created attachment 42020 [details, diff] patch to add Altivec detection for non-Darwin based operating systems Doh! I uploaded the ebuild, not the patch. Here's the patch.
luca can you have test/add this?
built fine, has that patch made upstream? The other patches I've seen weren't working ok I'll check it a bit and commit in a while
encoding works, decoding isn't
Luca, can you give me any more info on what goes wrong? Decoding works fine here on my iBook G4. Does it crash, or does the decode just fail with wrong MD5? It is only the decode routine which uses some Altivec . . . the patch doesn't change encoding at all. I haven't sent either of these upstream.
prova.wav is the original file prova1.wav is the decoded file from the flac-1.1.1 and prova2.wav is the decoded file from flac-1.1.0 lu_zero@utopia ~ $ md5sum /tmp/prova.wav d076059cfa50c5bea8dbba68d95c0197 /tmp/prova.wav lu_zero@utopia ~ $ md5sum /tmp/prova1.wav 8741216ee9114351470c146083341c47 /tmp/prova1.wav lu_zero@utopia ~ $ md5sum /tmp/prova2.wav d076059cfa50c5bea8dbba68d95c0197 /tmp/prova2.wav
Sorry Luca, but I don't know what to do now. All the files I've tested against work fine. :( I'll paste some version numbers and info below just in case that helps you figure it out. bash-2.05b$ gcc --version gcc (GCC) 3.4.1 20040803 (Gentoo Linux 3.4.1-r3, ssp-3.4-2, pie-8.7.6.5) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bash-2.05b$ as --version GNU assembler 2.15.90.0.3 20040415 Copyright 2002 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License. This program has absolutely no warranty. This assembler was configured for a target of `powerpc-unknown-linux-gnu'. bash-2.05b$ emerge --info Portage 2.0.50-r11 (default-ppc-2004.1, gcc-3.4.1, glibc-2.3.3.20040420-r1, 2.6.8) ================================================================= System uname: 2.6.8 ppc 7447A, altivec supported Gentoo Base System version 1.4.16 Autoconf: sys-devel/autoconf-2.59-r4 Automake: sys-devel/automake-1.8.5-r1 ACCEPT_KEYWORDS="ppc" AUTOCLEAN="yes" CFLAGS="-O2 -mcpu=7450 -maltivec -mabi=altivec -pipe -g3 -ggdb" CHOST="powerpc-unknown-linux-gnu" COMPILER="" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.3/share/config:/usr/kde/3.3/env:/usr/kde/3.3/shutdown /usr/kde/3/share/config /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/lib/pbbuttons /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-O2 -mcpu=7450 -maltivec -mabi=altivec -pipe -g3 -ggdb" DISTDIR="/usr/portage/distfiles" FEATURES="ccache nostrip" GENTOO_MIRRORS="ftp://mirror.internode.on.net/pub/gentoo http://gentoo.oregonstate.edu" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="X aalib alsa altivec arts berkdb bitmap-fonts bonobo cdr crypt cups debug doc dvd emacsf77 flac gdbm gif gnome-libs gpm gstreamer gtk gtk2 gtkhtml guile imap imlib java jpeg kde libwww motif mozilla mpeg nls oggvorbis opengl pam perl png ppc python qt quotes readline sdl slang ssl tcltk tcpd tetex truetype usb xine xmms xprint"
Hmm, works prefectly for me with above patches. md5sums are identical after decoding.
let me try to track down the issue, I do hope it was local
problem tracked, luckly was local, your patch is right.
closeing - this has been added.
I had some trouble today which led me to double-check my testing, and I'm now seeing this fail roughly 50% of the time. Previously I had only tested a few tracks, but today I tested 906 tracks, and had 442 failures. The testing was performed using the following command (you may need to change the -name expression): find -name '[[:digit:]]*.flac' -ls \ -exec flac -st '{}' >>/tmp/flac-test 2>&1 ';' Then counting the number of failures can be done with: grep -c "WARNING, MD5 signature mismatch" /tmp/flac-test Running the same on a x86 machine with flac 1.1.1 gave no failures, using the same 906 tracks. For a quick test, I have placed the smallest example of failure at: http://www.toojays.net/~toojays/misc/test-flac-1.1.1-ppc-fails.flac (Be warned, it's still 1.7 MB.) Can someone please double-check this using the flac-1.1.1 on ppc? I imagine it only happens on Altivec-enabled builds. It would be useful to know whether it happens on OS X as well (I would assume so, but haven't checked).
Hmm, yep, fails here as well. (AlBook). Could that be an endianess issue? I have another file it fails on and the decoded file sounds as if it is byteswapped (byteswapping it manually does not help, though)