forked from github/verilator
49 lines
1.5 KiB
Plaintext
49 lines
1.5 KiB
Plaintext
|
#!/usr/bin/env python3
|
||
|
######################################################################
|
||
|
# DESCRIPTION: Fuzzer result checker
|
||
|
#
|
||
|
# Copyright 2019-2019 by Eric Rippey. This package is free software; you can
|
||
|
# redistribute it and/or modify it under the terms of either the GNU Lesser
|
||
|
# General Public License Version 3 or the Perl Artistic License Version 2.0.
|
||
|
######################################################################
|
||
|
|
||
|
# This script is designed to rerun examples to see whether they have
|
||
|
# unexpected types of output besides the ones that afl-fuzz detects as
|
||
|
# such.
|
||
|
|
||
|
from glob import glob
|
||
|
from subprocess import getstatusoutput
|
||
|
from argparse import ArgumentParser
|
||
|
|
||
|
def interesting(s):
|
||
|
if 'assert' in s: return 1
|
||
|
if 'Assert' in s: return 1
|
||
|
if 'Aborted' in s: return 1
|
||
|
if 'terminate' in s:
|
||
|
if 'unterminated' in s:
|
||
|
return 0
|
||
|
return 1
|
||
|
if 'Segmentation' in s:
|
||
|
return 1
|
||
|
if 'internal error' in s:
|
||
|
return 1
|
||
|
return 0
|
||
|
|
||
|
|
||
|
def main():
|
||
|
p = ArgumentParser()
|
||
|
p.add_argument('--dir',default='out1/queue')
|
||
|
args = p.parse_args()
|
||
|
|
||
|
for infile in glob(args.dir+'/*'):
|
||
|
# Input filenames are known not to contain spaces or other unusual
|
||
|
# characters, therefore this works.
|
||
|
status,output = getstatusoutput('../../bin/verilator_bin --cc '+infile)
|
||
|
if interesting(output):
|
||
|
print(infile)
|
||
|
print(status)
|
||
|
print(output)
|
||
|
|
||
|
if __name__=='__main__':
|
||
|
main()
|