forked from github/verilator
54 lines
1.6 KiB
Python
Executable File
54 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# pylint: disable=C0103,C0114,C0115,C0116,C0321,R0911
|
|
######################################################################
|
|
# DESCRIPTION: Fuzzer result checker
|
|
#
|
|
# Copyright 2019-2019 by Eric Rippey. This program 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.
|
|
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-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()
|