Initial checkin.
[people/mcb30/legacybios.git] / tools / defsyms.py
1 #!/usr/bin/env python
2 # Simple script to convert the output from 'nm' to a C style header
3 # file with defined offsets.
4 #
5 # Copyright (C) 2008  Kevin O'Connor <kevin@koconnor.net>
6 #
7 # This file may be distributed under the terms of the GNU GPLv3 license.
8
9 import sys
10 import string
11
12 def main():
13     syms = []
14     lines = sys.stdin.readlines()
15     for line in lines:
16         addr, type, sym = line.split()
17         if type not in 'TA':
18             # Only interested in global symbols in text segment
19             continue
20         for c in sym:
21             if c not in string.letters + string.digits + '_':
22                 break
23         else:
24             syms.append((sym, addr))
25     print """
26 #ifndef __OFFSET16_AUTO_H
27 #define __OFFSET16_AUTO_H
28 // Auto generated file - please see defsyms.py.
29 // This file contains symbol offsets of a compiled binary.
30 """
31     for sym, addr in syms:
32         print "#define OFFSET_%s 0x%s" % (sym, addr)
33     print """
34 #endif // __OFFSET16_AUTO_H
35 """
36
37 if __name__ == '__main__':
38     main()