| #!/usr/bin/env python |
| #===- lib/fuzzer/scripts/merge_data_flow.py ------------------------------===# |
| # |
| # The LLVM Compiler Infrastructure |
| # |
| # This file is distributed under the University of Illinois Open Source |
| # License. See LICENSE.TXT for details. |
| # |
| #===------------------------------------------------------------------------===# |
| # Merge several data flow traces into one. |
| # Usage: |
| # merge_data_flow.py trace1 trace2 ... > result |
| #===------------------------------------------------------------------------===# |
| import sys |
| import fileinput |
| from array import array |
| |
| def Merge(a, b): |
| res = array('b') |
| for i in range(0, len(a)): |
| res.append(ord('1' if a[i] == '1' or b[i] == '1' else '0')) |
| return res.tostring() |
| |
| def main(argv): |
| D = {} |
| for line in fileinput.input(): |
| [F,BV] = line.strip().split(' ') |
| if F in D: |
| D[F] = Merge(D[F], BV) |
| else: |
| D[F] = BV; |
| for F in D.keys(): |
| print("%s %s" % (F, D[F])) |
| |
| if __name__ == '__main__': |
| main(sys.argv) |