On Sat, Feb 10, 2018 at 7:51 AM, Michael Niedermayer
<mich...@niedermayer.cc> wrote:
> On Fri, Feb 09, 2018 at 10:21:04PM +0700, Muhammad Faiz wrote:
>> On Fri, Feb 9, 2018 at 6:53 PM, James Almer <jamr...@gmail.com> wrote:
>> > On 2/9/2018 7:56 AM, Muhammad Faiz wrote:
>> >> On Thu, Feb 8, 2018 at 7:04 AM, Michael Niedermayer
>> >> <mich...@niedermayer.cc> wrote:
>> >>> On Wed, Feb 07, 2018 at 01:52:33PM +0100, Nicolas George wrote:
>> >>>> Josh de Kock (2018-02-06):
>> >>>>> ffmpeg | branch: master | Josh de Kock <j...@itanimul.li> | Fri Dec 22 
>> >>>>> 22:17:00 2017 +0000| [7e8eba2d8755962d9dca5eade57bf8f591a73c0c] | 
>> >>>>> committer: Josh de Kock
>> >>>>>
>> >>>>> lavc: add new API for iterating codecs and codec parsers
>> >>>>>
>> >>>>> Based on an unfinished patch by atomnuker.
>> >>>
>> >>> This commit also breaks
>> >>>
>> >>> ./configure --enable-libsoxr && make -j12 fate-checkasm
>> >>>  make -j12 fate-checkasm
>> >>>  ...
>> >>> LD      tests/checkasm/checkasm
>> >>> libswresample/libswresample.a(soxr_resample.o): In function 
>> >>> `get_out_samples':
>> >>> ffmpeg/libswresample/soxr_resample.c:118: undefined reference to 
>> >>> `soxr_delay'
>> >>> libswresample/libswresample.a(soxr_resample.o): In function `get_delay':
>> >>> ffmpeg/libswresample/soxr_resample.c:100: undefined reference to 
>> >>> `soxr_delay'
>> >>> libswresample/libswresample.a(soxr_resample.o): In function `flush':
>> >>> ffmpeg/libswresample/soxr_resample.c:70: undefined reference to 
>> >>> `soxr_delay'
>> >>> ffmpeg/libswresample/soxr_resample.c:72: undefined reference to 
>> >>> `soxr_process'
>> >>> ffmpeg/libswresample/soxr_resample.c:77: undefined reference to 
>> >>> `soxr_process'
>> >>> ffmpeg/libswresample/soxr_resample.c:78: undefined reference to 
>> >>> `soxr_delay'
>> >>> libswresample/libswresample.a(soxr_resample.o): In function `process':
>> >>> ffmpeg/libswresample/soxr_resample.c:88: undefined reference to 
>> >>> `soxr_set_num_channels'
>> >>> ffmpeg/libswresample/soxr_resample.c:88: undefined reference to 
>> >>> `soxr_set_error'
>> >>> ffmpeg/libswresample/soxr_resample.c:90: undefined reference to 
>> >>> `soxr_process'
>> >>> libswresample/libswresample.a(soxr_resample.o): In function `destroy':
>> >>> ffmpeg/libswresample/soxr_resample.c:65: undefined reference to 
>> >>> `soxr_delete'
>> >>> libswresample/libswresample.a(soxr_resample.o): In function `create':
>> >>> ffmpeg/libswresample/soxr_resample.c:46: undefined reference to 
>> >>> `soxr_io_spec'
>> >>> ffmpeg/libswresample/soxr_resample.c:48: undefined reference to 
>> >>> `soxr_quality_spec'
>> >>> ffmpeg/libswresample/soxr_resample.c:56: undefined reference to 
>> >>> `soxr_delete'
>> >>> ffmpeg/libswresample/soxr_resample.c:57: undefined reference to 
>> >>> `soxr_create'
>> >>> collect2: error: ld returned 1 exit status
>> >>> make: *** [tests/checkasm/checkasm] Error 1
>> >>
>> >> Fixed in 81d6501be77b273053a66eeced94d78e2021f1d1
>> >>
>> >> Thank's.
>> >
>> > This is not a proper solution. swr is pulled by avcodec only if Opus
>> > decoder is enabled. There's no reason to hardcode it for checkasm 
>> > otherwise.
>> > The problem here is that the Makefile should pull all the dependencies
>> > of its hardcoded dependencies. This is what FFLIBS and FFEXTRALIBS do in
>> > common.mak to link the actual libraries.
>>
>> Probably, this is not a proper solution, but it is trivial enough.
>> (I'm sorry that I pushed it without posting).
>> So, please fix it with the proper solution. Probably, by adding
>> swresample-extralibs to avcodec-extralibs when avcodec has dependency
>> to swresample. I don't know how to do it.
>>
>
>> >
>> > That said, was this really a regression generated by this commit? It
>> > looks unrelated.
>>
>> Actually, it was a bug even before this commit. Just, previously it
>> was hidden because linker was smart enough to discard unneeded
>> dependency. But now when the list is changed to array, the linker is
>> unable to do it.
>
> iam not sure i understand correctly. But does this mean that
> tools/target_dec_"codec"_fuzzer will now include everything and not just
> the "codec" ?
> If so this will possibly prevent FFmpeg from being tested in googles ossfuzz
> framework. As their diskspace was already rather tight.
>
> i do see on my disk that the more recently build fuzzers have gottem MUCH
> larger:
> -rwxr-x--- 1 michael michael  17588987 Feb  3 18:53 
> tools/target_dec_scpr_fuzzer*
> -rwxr-x--- 1 michael michael  17476326 Feb  4 02:16 
> tools/target_dec_paf_video_fuzzer*
> -rwxr-x--- 1 michael michael 143210465 Feb  9 13:53 
> tools/target_dec_h264_fuzzer*
> -rwxr-x--- 1 michael michael 143210465 Feb  9 13:56 
> tools/target_dec_vp3_fuzzer*
>

Does the attached patch fix the problem?

Thank's.
From 46d5a15dba7578d312aae59048ad608c9afdacbf Mon Sep 17 00:00:00 2001
From: Muhammad Faiz <mfc...@gmail.com>
Date: Sat, 10 Feb 2018 17:08:04 +0700
Subject: [PATCH] tools/target_dec_fuzzer: don't use avcodec_register()

Signed-off-by: Muhammad Faiz <mfc...@gmail.com>
---
 tools/target_dec_fuzzer.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/target_dec_fuzzer.c b/tools/target_dec_fuzzer.c
index 62d62a9de3..6c575f8845 100644
--- a/tools/target_dec_fuzzer.c
+++ b/tools/target_dec_fuzzer.c
@@ -144,7 +144,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 #define DECODER_SYMBOL0(CODEC) ff_##CODEC##_decoder
 #define DECODER_SYMBOL(CODEC) DECODER_SYMBOL0(CODEC)
         extern AVCodec DECODER_SYMBOL(FFMPEG_DECODER);
-        avcodec_register(&DECODER_SYMBOL(FFMPEG_DECODER));
+        if (DECODER_SYMBOL(FFMPEG_DECODER).init_static_data)
+            DECODER_SYMBOL(FFMPEG_DECODER).init_static_data(&DECODER_SYMBOL(FFMPEG_DECODER));
 
         c = &DECODER_SYMBOL(FFMPEG_DECODER);
 #else
-- 
2.13.2

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to