[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 07/13] fuzz/x86_emulate: Add 'afl-cov' target



On 10/04/2017 09:23 AM, Jan Beulich wrote:
>>>> On 25.09.17 at 16:26, <george.dunlap@xxxxxxxxxx> wrote:
>> --- a/tools/fuzz/README.afl
>> +++ b/tools/fuzz/README.afl
>> @@ -41,3 +41,17 @@ Use the x86 instruction emulator fuzzer as an example.
>>     $ $AFLPATH/afl-fuzz -t 1000 -i testcase_dir -o findings_dir -- 
>> ./afl-harness
>>  
>>  Please see AFL documentation for more information.
>> +
>> +# GENERATING COVERAGE INFORMATION
>> +
>> +To use afl-cov or gcov, you need a separate binary instrumented to
>> +generate coverage data.  To do this, use the target `afl-cov`:
>> +
>> +    $ make afl-cov #produces afl-harness-cov
>> +
>> +NOTE: Please also note that the coverage instrumentation hard-codes
>> +the absolute path for the instrumentation read and write files in the
>> +binary; so coverage data will always show up in the build directory no
>> +matter where you run the binary from.
>> +
>> +Please see afl-cov and/or gcov documentation for more information.
>> \ No newline at end of file
> 
> Would you please add the missing newline?

Ack

> 
>> --- a/tools/fuzz/x86_instruction_emulator/Makefile
>> +++ b/tools/fuzz/x86_instruction_emulator/Makefile
>> @@ -23,19 +23,34 @@ x86_emulate_user.c x86_emulate_user.h: %:
>>  
>>  CFLAGS += $(CFLAGS_xeninclude) -D__XEN_TOOLS__ -I.
>>  
>> +GCOV_FLAGS=--coverage
> 
> := ?

Ack

> 
>>  x86.h := asm/x86-vendors.h asm/x86-defns.h asm/msr-index.h
>>  x86_emulate.h := x86_emulate_user.h x86_emulate/x86_emulate.h $(x86.h)
>>  
>> -x86_emulate_user.o: x86_emulate_user.c x86_emulate/x86_emulate.c 
>> $(x86_emulate.h)
>> +X86_EMULATE_INPUTS = x86_emulate_user.c x86_emulate/x86_emulate.c 
>> $(x86_emulate.h)
>> +x86_emulate_user.o: $(X86_EMULATE_INPUTS)
>> +
>> +x86_emulate_user-cov.o: $(X86_EMULATE_INPUTS)
>> +    $(CC) -c $(CFLAGS) $(GCOV_FLAGS) -o $@ x86_emulate_user.c
>>  
>>  fuzz-emul.o: $(x86_emulate.h)
>>  
>> +fuzz-emul-cov.o: fuzz-emul.c $(x86_emulate.h)
>> +    $(CC) -c $(CFLAGS) $(GCOV_FLAGS) -o $@ fuzz-emul.c
>> +
>> +afl-harness-cov.o: afl-harness.c
>> +    $(CC) -c $(CFLAGS) $(GCOV_FLAGS) $^ -o $@
> 
> Rather than effectively repeating this command three time, I think
> someone else had already suggested to use a pattern rule instead.

What do you mean "three times"?  There's only  one *-cov.o file which
can possibly be created by a generic rule, and that's this one.   (The
others all have special formulas already.)  Is it really worth making a
generic rule for a single instance?

>> @@ -46,7 +61,7 @@ distclean: clean
>>  
>>  .PHONY: clean
>>  clean:
>> -    rm -f *.a *.o .*.d afl-harness
>> +    rm -f *.a *.o .*.d afl-harness afl-harness-cov *.gcda *.gcno *.gcov
> 
> Perhaps simply *.gc* to cover for possible future generated file types?

If I knew that this wouldn't match files like "foo.gcov-notes.txt" I'd
be fine with it.  I'll change it if you insist but I think it's probably
better the way it is for now.

 -George

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.