1#!/usr/bin/env python 2#===- lib/fuzzer/scripts/merge_data_flow.py ------------------------------===# 3# 4# The LLVM Compiler Infrastructure 5# 6# This file is distributed under the University of Illinois Open Source 7# License. See LICENSE.TXT for details. 8# 9#===------------------------------------------------------------------------===# 10# Merge several data flow traces into one. 11# Usage: 12# merge_data_flow.py trace1 trace2 ... > result 13#===------------------------------------------------------------------------===# 14import sys 15import fileinput 16from array import array 17 18def Merge(a, b): 19 res = array('b') 20 for i in range(0, len(a)): 21 res.append(ord('1' if a[i] == '1' or b[i] == '1' else '0')) 22 return res.tostring() 23 24def main(argv): 25 D = {} 26 for line in fileinput.input(): 27 [F,BV] = line.strip().split(' ') 28 if F in D: 29 D[F] = Merge(D[F], BV) 30 else: 31 D[F] = BV; 32 for F in D.keys(): 33 print("%s %s" % (F, D[F])) 34 35if __name__ == '__main__': 36 main(sys.argv) 37