On Mon, Jan 25, 2016 at 10:35:12AM +0000, Vicente Olivert Riera wrote: > On 21/01/16 23:17, Michael Niedermayer wrote: > > On Wed, Jan 20, 2016 at 02:33:21PM +0000, Vicente Olivert Riera wrote: > >> On 20/01/16 13:15, Michael Niedermayer wrote: > >>> On Wed, Jan 20, 2016 at 12:21:37PM +0000, Vicente Olivert Riera wrote: > >>>> On 20/01/16 12:05, Michael Niedermayer wrote: > >>>>> On Wed, Jan 20, 2016 at 11:37:52AM +0000, Vicente Olivert Riera wrote: > >>>>>> Hello Michael, > >>>>>> > >>>>>> On 19/01/16 22:11, Michael Niedermayer wrote: > >>>>>>> On Thu, Jan 14, 2016 at 02:59:03PM +0000, Vicente Olivert Riera wrote: > >>>>>>>> Signed-off-by: Vicente Olivert Riera <vincent.ri...@imgtec.com> > >>>>>>>> --- > >>>>>>>> Changes v5 -> v6: > >>>>>>>> - Multiple changes: > >>>>>>>> - Use separate if blocks when detecting the MIPS ISA, this way > >>>>>>>> when a block > >>>>>>>> disables one ISA it will be detected by the next one. Before > >>>>>>>> the elif was > >>>>>>>> preventing this to be done. > >>>>>>>> - Don't use check_cflags and use only check_ldflags instead, > >>>>>>>> which will > >>>>>>>> check if that flag is valid for compiling and linking. The > >>>>>>>> compiler may > >>>>>>>> accept some cflags for compiling but not for linking, so if we > >>>>>>>> check first > >>>>>>>> for the cflags it will succeed, and the cflags will be added to > >>>>>>>> the CFLAGS > >>>>>>>> variable despite of the check_ldflags failing after that. This > >>>>>>>> can cause > >>>>>>>> problems because of having multiple incompatible cflags enabled > >>>>>>>> at the same > >>>>>>>> time. > >>>>>>>> - Check if mipsfpu has been disabled, and if so, then use > >>>>>>>> -msoft-float. This > >>>>>>>> way we override the compiler default behavious which can be > >>>>>>>> building for > >>>>>>>> hard-float. > >>>>>>>> - Explicitly disable the features that fail any check by adding > >>>>>>>> "|| disable > >>>>>>>> $feature" at the end of the checks chain. > >>>>>>>> > >>>>>>>> Changes v4 -> v5: > >>>>>>>> - Check for msa.h and disable msa if not found. > >>>>>>>> > >>>>>>>> Changes v3 -> v4: > >>>>>>>> - Nothing. > >>>>>>>> > >>>>>>>> Changes v2 -> v3: > >>>>>>>> - Nothing. > >>>>>>>> > >>>>>>>> Changes v1 -> v2: > >>>>>>>> - Add a block of code for mipsdspr2 which was previously placed in > >>>>>>>> the > >>>>>>>> first patch of this series causing a syntax error in the configure > >>>>>>>> script. > >>>>>>>> > >>>>>>>> https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2015-November/183444.html > >>>>>>> > >>>>>>> make distclean ; ../configure --cross-prefix=/usr/mips-linux-gnu/bin/ > >>>>>>> --cc='ccache mips-linux-gnu-gcc-4.4' --arch=mips --target-os=linux > >>>>>>> --enable-cross-compile --disable-mipsfpu && make -j12 > >>>>>>> results in pages of: > >>>>>>> > >>>>>>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>>>>>> Warning: libavfilter/filtfmts-test uses hard float, > >>>>>>> libswresample/libswresample.a(dither.o) uses soft float > >>>>>>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>>>>>> Warning: libavfilter/filtfmts-test uses hard float, > >>>>>>> libswresample/libswresample.a(resample.o) uses soft float > >>>>>>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>>>>>> Warning: libavfilter/filtfmts-test uses hard float, > >>>>>>> libswresample/libswresample.a(resample_dsp.o) uses soft float > >>>>>>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>>>>>> Warning: libavfilter/filtfmts-test uses hard float, > >>>>>>> libavutil/libavutil.a(adler32.o) uses soft float > >>>>>>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>>>>>> Warning: libavfilter/filtfmts-test uses hard float, > >>>>>>> libavutil/libavutil.a(aes.o) uses soft float > >>>>>>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>>>>>> Warning: libavfilter/filtfmts-test uses hard float, > >>>>>>> libavutil/libavutil.a(aes_ctr.o) uses soft float > >>>>>>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>>>>>> Warning: libavfilter/filtfmts-test uses hard float, > >>>>>>> libavutil/libavutil.a(audio_fifo.o) uses soft float > >>>>>>> > >>>>>>> > >>>>>>> [...] > >>>>>>> > >>>>>> > >>>>>> I can't reproduce your issue. Look: > >>>>>> > >>>>>> $ make distclean ; ./configure --cross-prefix=mips-linux-gnu- > >>>>>> --arch=mips --target-os=linux --enable-cross-compile --disable-mipsfpu > >>>>>> > >>>>>> And then: > >>>>>> > >>>>>> $ make -j1 V=1 2>&1 | tee build.log > >>>>>> > >>>>>> And then: > >>>>>> > >>>>>> $ grep "uses soft float" build.log > >>>>>> $ grep "filtfmts-test" build.log > >>>>>> > >>>>>> It gives me nothing. > >>>>>> > >>>>>> Also I try to find for that filtfmts-test file which your logs say that > >>>>>> is using hard-float, and I cannot find it: > >>>>>> > >>>>> > >>>>>> $ find . -name "filtfmts-test*" > >>>>>> $ > >>>>> > >>>>> see libavfilter/filtfmts.c > >>>> > >>>> But do you have a generated filtfmts-test binary or a filtfmts.o file? > >>>> Because when my build is finished I don't any anything of that. > >>> > >>> make libavfilter/filtfmts-test > >>> CC libavfilter/filtfmts-test.o > >>> libavfilter/filtfmts.c:141:9: warning: ignoring return value of function > >>> declared with warn_unused_result attribute [-Wunused-result] > >>> ff_default_query_formats(filter_ctx); > >>> ^~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ > >>> 1 warning generated. > >>> LD libavfilter/filtfmts-test > >>> > >>> the source and object files differ in their names > >>> > >> > >> I see. Ok, look at this: > >> > >> $ make libavfilter/filtfmts-test > >> CC libavfilter/filtfmts-test.o > >> libavfilter/filtfmts.c: In function 'main': > >> libavfilter/filtfmts.c:141:9: warning: ignoring return value of > >> 'ff_default_query_formats', declared with attribute warn_unused_result > >> [-Wunused-result] > >> ff_default_query_formats(filter_ctx); > >> ^ > >> LD libavfilter/filtfmts-test > >> > >> $ mips-linux-gnu-objdump -x libavfilter/filtfmts-test | grep "FP ABI" > >> FP ABI: Soft float > >> > >> It shows to me that it has been for soft-float. > >> > >>>> > >>>>> our compilers differ > >>>>> the one i have here is a binary from emdebian > >>>>> are you droping support for that ? > >>>>> if so that should be clearly stated in the commit message, and the > >>>>> compiler cleanly detected and a clear warning given to the user why > >>>>> his/her compiler isnt supported and what is supported > >>>> > >>>> Well, my intention isn't dropping support for anything, although this is > >>>> what the emdebian website says: > >>>> > >>>> "Status of Emdebian distributions > >>>> > >>>> As of July 2014, updates to the Emdebian distributions ceased. There > >>>> will be no further updates and no further stable releases." > >>> > >>> i know, the problem is not me, i can update, IIRC you guys posted a > >>> binary already > >>> but others might use similarly build or old compilers > >>> so keeping this one here gives some wider coverage ... and its less > >>> work > >> > >> I also want to keep it. > >> > >>>> > >>>> Anyway, how can I obtain the same compiler as you have in order to try > >>>> reproducing the bug? > >>> > >>> i dont know, if they arent on emdian anymore > >>> i dont seem to have the deb files in var/cache/apt/archive anymore > >>> > >>> Package: gcc-4.4-mips-linux-gnu > >>> Status: install ok installed > >>> Priority: extra > >>> Section: devel > >>> Installed-Size: 3088 > >>> Maintainer: Debian GCC Maintainers <debian-...@lists.debian.org> > >>> Architecture: amd64 > >>> Source: gcc-4.4 > >>> Version: 4.4.5-8 > >>> Provides: c-compiler-mips-linux-gnu > >>> Depends: gcc-4.4-mips-linux-gnu-base (= 4.4.5-8), cpp-4.4-mips-linux-gnu > >>> (= 4.4.5-8), binutils-mips-linux-gnu (>= 2.20.1-15~), libgcc1-mips-cross > >>> (>= 1:4.4.5-8), libgomp1-mips-cross (>= 4.4.5-8), libc6 (>= 2.11) > >>> Recommends: libc6-dev-mips-cross (>= 2.5) > >>> Suggests: gcc-4.4-multilib-mips-linux-gnu, libmudflap0-4.4-dev-mips-cross > >>> (>= 4.4.5-8), gcc-4.4-doc (>= 4.4.4-17), gcc-4.4-locales (>= 4.4.4-17), > >>> libgcc1-dbg-mips-cross, libgomp1-dbg-mips-cross, > >>> libmudflap0-dbg-mips-cross, libcloog-ppl0 (>= 0.15.9-2~), libppl-c2, > >>> libppl7 > >>> Description: The GNU C compiler > >>> This is the GNU C compiler, a fairly portable optimizing compiler for C. > >>> . > >>> This package contains C cross-compiler for mips architecture. > >>> Homepage: http://gcc.gnu.org/ > >>> > >> > >> Ok then. > >> > >>>> > >>>>> make distclean ; ../configure --cross-prefix=/usr/mips-linux-gnu/bin/ > >>>>> --cc='mips-linux-gnu-gcc-4.4' --arch=mips --target-os=linux > >>>>> --enable-cross-compile --disable-mipsfpu && make -j12 >& build > >>>>> > >>>>> grep 'uses soft float' build | wc > >>>>> 2327 24879 389225 > >>>>> > >>>>> echo 'int main(void){ return 0; }' | mips-linux-gnu-gcc-4.4 -x c - -o > >>>>> out.o > >>>>> echo 'int main(void){ return 0; }' | mips-linux-gnu-gcc-4.4 -x c - -o > >>>>> out.o -msoft-float > >>>>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>>>> Warning: out.o uses hard float, /tmp/ccFlutMG.o uses soft float > >>>>> > >>>>> > >>>> > >>>> But I don't understand how your compiler built something for hard-float > >>>> when the -msoft-float option should be used instead. This is what I have > >>>> (note that I passed V=1 to the make command): > >>>> > >>>> $ grep '\-mhard-float' build.log | wc -l > >>>> 0 > >>>> $ grep '\-msoft-float' build.log | wc -l > >>>> 1411 > >>>> $ grep "mips-linux-gnu-gcc" build.log | wc -l > >>>> 1411 > >>>> > >>>> So the -mhard-float option wasn't used at all, and the -msoft-float one > >>>> was used every time the compiler was called. > >>>> > >>>> I'm curious, can you show me your output for those same commands, please? > >>> > >>> before the patch: > >>> grep '\-mhard-float' build.log-V1-disable-mipsfpu | wc -l > >>> 0 > >>> > >>> grep '\-msoft-float' build.log-V1-disable-mipsfpu | wc -l > >>> 0 > >> > >> So, before the patch when you pass the --disable-mipsfpu option, what > >> configure does is not adding the -mhard-float option to the CFLAGS. But > >> also it doesn't add -msoft-float. So no float option is passed to the > >> compiler at all. > >> > >> Given that you don't pass any of those two options to the compiler, the > >> default one will be used, which I think it will be -mhard-float. > >> > >> Look at this simple test: > >> > >> $ cat test.c > >> int main(){return 0;} > >> $ # USING -mhard-float > >> $ mips-linux-gnu-gcc -mhard-float test.c > >> $ mips-linux-gnu-objdump -x a.out | grep "FP ABI" > >> FP ABI: Hard float (double precision) > >> $ # USING -msoft-float > >> $ mips-linux-gnu-gcc -msoft-float test.c > >> $ mips-linux-gnu-objdump -x a.out | grep "FP ABI" > >> FP ABI: Soft float > >> $ # USING COMPILER'S DEFAULT > >> $ mips-linux-gnu-gcc test.c > >> $ mips-linux-gnu-objdump -x a.out | grep "FP ABI" > >> FP ABI: Hard float (double precision) > >> > >> So, as you can see, before that patch, when we were passing > >> --disable-mipsfpu to the configure script, we weren't building ffmpeg > >> for soft-float. We were actually building it for the compiler's default > >> floatness, which could be either soft-float or (more likely) hard-float. > >> > >> That's why you didn't see those warnings, because everything was being > >> built for hard-float. > >> > >>> after the patch: > >>> grep '\-mhard-float' build.log-V1-disable-mipsfpu-with-patch | wc -l > >>> 0 > >>> grep '\-msoft-float' build.log-V1-disable-mipsfpu-with-patch | wc -l > >>> 1428 > >>> grep "mips-linux-gnu-gcc" build.log-V1-disable-mipsfpu-with-patch | wc -l > >>> 1428 > >> > >> This is what doesn't make sense to me. Every time your compiler is > >> called it has the -msoft-float option with it, so everything it has > >> built was built for soft-float. > >> > >>> also forget about filtfmts, its not specifici to that > >>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>> Warning: ffprobe_g uses hard float, libavutil/libavutil.a(samplefmt.o) > >>> uses soft float > >>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>> Warning: ffprobe_g uses hard float, libavutil/libavutil.a(sha.o) uses > >>> soft float > >>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>> Warning: ffprobe_g uses hard float, libavutil/libavutil.a(sha512.o) uses > >>> soft float > >>> /usr/lib/gcc/mips-linux-gnu/4.4.5/../../../../mips-linux-gnu/bin/ld: > >>> Warning: ffprobe_g uses hard float, libavutil/libavutil.a(stereo3d.o) > >>> uses soft float > >> > >> Can you grep the output of "mips-linux-gnu-objdump -x ffprobe_g" and > >> search for "FP ABI" in order to see if it actually uses hard float? > > > > before and after the patch there is no match, greping for ABI > > 1 .note.ABI-tag 00000020 004001a4 004001a4 000001a4 2**2 > > 004001a4 l d .note.ABI-tag 00000000 .note.ABI-tag > > > > mips-linux-gnu-objdump -x ffprobe_g | grep 'ABI' > > 1 .note.ABI-tag 00000020 004001a4 004001a4 000001a4 2**2 > > 004001a4 l d .note.ABI-tag 00000000 .note.ABI-tag > > > > also both mips-linux-gnu-objdump and the normal hosts objdump give the > > same result > > > > [...] > > > > Hello Michael, > > I don't know what else to do. The think is that those are warning > messages, so it seems your build doesn't fail.
yes but the binary doesnt work make fate TEST checkasm TEST source TEST api-flac TEST lavf-aiff --- ffmpeg/tests/ref/lavf/aiff 2016-01-25 00:20:45.154515021 +0100 +++ tests/data/fate/lavf-aiff 2016-01-25 12:14:24.507417107 +0100 @@ -1,3 +0,0 @@ -2c129d88acef834e32869145fe792b9c *./tests/data/lavf/lavf.aif -88270 ./tests/data/lavf/lavf.aif -./tests/data/lavf/lavf.aif CRC=0x3a1da17e Test lavf-aiff failed. Look at tests/data/fate/lavf-aiff.err for details. make: *** [fate-lavf-aiff] Error 1 libavutil 55. 14.100 / 55. 14.100 libavcodec 57. 22.100 / 57. 22.100 libavformat 57. 23.100 / 57. 23.100 libavdevice 57. 0.100 / 57. 0.100 libavfilter 6. 27.100 / 6. 27.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Ignoring attempt to set invalid timebase 1/0 for st:0 [pcm_s16le @ 0x1c3e1d0] Warning: not compiled with thread support, using thread emulation [pcm_s16le @ 0x1c3e1d0] PCM channels out of bounds [s16le @ 0x1c35550] Failed to open codec in av_find_stream_info [s16le @ 0x1c35550] Could not find codec parameters for stream 0 (Audio: pcm_s16le, 0 channels): unspecified sample format Consider increasing the value for the 'analyzeduration' and 'probesize' options ffmpeg/mips/./tests/data/asynth1.sw: could not find codec parameters Input #0, s16le, from 'ffmpeg/mips/./tests/data/asynth1.sw': Duration: N/A, bitrate: N/A Stream #0:0: Audio: pcm_s16le, 0 channels Codec AVOption idct (select IDCT implementation) specified for input file #0 (ffmpeg/mips/./tests/data/asynth1.sw) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream. Please use -q:a or -q:v, -qscale is ambiguous Output #0, aiff, to 'ffmpeg/mips/./tests/data/lavf/lavf.aif': [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB What does censorship reveal? It reveals fear. -- Julian Assange
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel