xnu-4570.20.62.tar.gz
[apple/xnu.git] / san / tools / generate_dynamic_blacklist.py
1 #!/usr/bin/env python
2
3 import sys
4 import re
5
6 def type_map(x):
7 return "TYPE_" + x.upper()
8
9 re_comments=re.compile(r'#.*$')
10
11 bl = file(sys.argv[1])
12
13 print r'struct blacklist_entry blacklist[] = {'
14
15 for line in bl.readlines():
16 line = re_comments.sub("", line).strip()
17
18 if not line:
19 continue
20
21 fields = line.split(":")
22 if len(fields) != 3:
23 continue
24
25 (kext, func, ty) = fields
26
27 if kext == "":
28 kext = "NULL";
29 else:
30 kext = '"' + kext + '"'
31
32 if func == "":
33 func = "NULL";
34 else:
35 func = '"' + func + '"'
36
37 if ty == "":
38 ty = "all";
39
40 print """ {{
41 .kext_name = {},
42 .func_name = {},
43 .type_mask = {},
44 }},""".format(kext, func, type_map(ty))
45
46 print r'};'