[llvm-dev] [RFC] Implementing LLVM MC Protobuf Fuzzer for Assembly and Encoding for RISC-V target
via llvm-dev
llvm-dev at lists.llvm.org
Wed Oct 24 13:05:23 PDT 2018
Hi Daniel,
Thanks for the feedback.
That is correct, you can invoke the fuzzers without a golden reference
implementation. The driver program to compare behaviors is just a
convenient tool for those who have a reference implementation.
I am not sure I understood your suggestion about de-serializing Protobuf
messages as MCInst objects. Can you clarify?
Thanks,
Ana.
On 2018-10-16 10:34, Daniel Sanders wrote:
>> On 16 Oct 2018, at 10:09, Daniel Sanders via llvm-dev
>> <llvm-dev at lists.llvm.org> wrote:
>>
>> Hi Ana,
>>
>> I think this looks interesting although unfortunately I'm not sure I'm
>> going to be able to make use of it for my current target as I don't
>> have a golden reference tool available.
>
> Thinking about it a bit more, the lack of a golden reference only
> really affects my ability to use the driver script. With a
> different/modified driver I should be able to use the underlying
> fuzzer without a reference tool available.
>
>> One of the key weaknesses of llvm-mc-disassembler-fuzzer for most
>> targets is that it only finds a corpus of tests that improve coverage
>> but doesn't provide any assessment on what the correct behaviour is. A
>> human is required to make proper test cases out of the corpus and feed
>> it back in so the fuzzer can drop the corresponding generated tests.
>> Having a fuzzer that can verify the behaviour as well would be very
>> useful for targets with access to a golden reference tool.
>>
>> One thing that occurred to me while skimming through D51144 was that
>> something similar to proto_to_asm_main.cpp could be used to generate
>> MCInst objects directly from the same protobuf. This would allow you
>> to attribute bugs to the parser, instruction printer, or object
>> emitter since you'd be able to tell, for example, that the parser
>> emitted the an MCInst that matched the one expected by the protobuf.
>>
>>> On 15 Oct 2018, at 12:29, via llvm-dev <llvm-dev at lists.llvm.org>
>>> wrote:
>>>
>>>
>>> Hello,
>>>
>>> We have implemented LLVM Machine Code Protobuf fuzzers for the RISC-V
>>> target as part of a Summer internship project with our intern Jocelyn
>>> Wei.
>>>
>>> The fuzzers for the assembler and disassembler proved to be useful.
>>> We uncovered bugs and detected compatibility issues with other tools,
>>> e.g., by running a driver program that implements a round trip with a
>>> golden (i.e., more tested) tool such as GNU AS.
>>>
>>> We built different fuzzer versions to experiment with the level of
>>> fuzzing for the instruction operands.
>>> The versions are labeled sample, semi-constrained, unconstrained. We
>>> fix opcodes, and depending on the fuzzer version, allow number of
>>> operands, operand value ranges, and operand types to vary.
>>>
>>> The code is available for review:
>>> https://reviews.llvm.org/D51710 Implemented Protobuf fuzzer for LLVM
>>> RISC-V MC Disassembler
>>> https://reviews.llvm.org/D51144 Implemented Protobuf fuzzer for LLVM
>>> RISC-V MC Assembler
>>>
>>> We would like to assess people's interest in adding this type of tool
>>> to the LLVM code base.
>>>
>>> It can be further improved for RISC-V target and also expanded to
>>> other targets.
>>>
>>> We have a Poster about the fuzzers at the LLVM Dev Conf this week.
>>>
>>> Please visit our poster and come by with your comments and
>>> suggestions. We appreciate your feebdack.
>>>
>>> Thank you,
>>> Ana.
>>>
>>> --
>>> Ana Pazos
>>> Qualcomm Innovation Center, Inc.
>>> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
>>> a Linux Foundation Collaborative Project.
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
Ana Pazos
Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project.
More information about the llvm-dev
mailing list