Fix header guards produced by defsys.py
authorKevin O'Connor <kevin@koconnor.net>
Sat, 1 Mar 2008 15:11:55 +0000 (10:11 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Sat, 1 Mar 2008 15:11:55 +0000 (10:11 -0500)
Issue spotted by Nguyen Anh Quynh

Makefile
tools/defsyms.py

index 8d97a00a1f84c1f1f2c65f44beb995e93a9ad507..33136da6e400b83fcdf62f4bacee90b6ec9507f6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -58,7 +58,7 @@ $(OUT)%.bin: $(OUT)%.o
 
 $(OUT)%.offset.auto.h: $(OUT)%.o
        @echo "  Generating symbol offset header $@"
-       $(Q)nm $< | ./tools/defsyms.py $@
+       $(Q)nm $< | ./tools/defsyms.py $@
 
 $(OUT)blob.16.s:
        @echo "  Generating whole program assembler $@"
index fe18d90505c58165b959d22e081641fe327c0f31..54d18b8bf22aed995977a7258d3a1eca334c78d0 100755 (executable)
@@ -9,7 +9,14 @@
 import sys
 import string
 
+def printUsage():
+    print "Usage:\n   %s <output file>" % (sys.argv[0],)
+    sys.exit(1)
+
 def main():
+    if len(sys.argv) != 2:
+        printUsage()
+    # Find symbols (that are valid)
     syms = []
     lines = sys.stdin.readlines()
     for line in lines:
@@ -22,17 +29,27 @@ def main():
                 break
         else:
             syms.append((sym, addr))
-    print """
-#ifndef __OFFSET16_AUTO_H
-#define __OFFSET16_AUTO_H
+    # Build guard string
+    guardstr = ''
+    for c in sys.argv[1]:
+        if c not in string.letters + string.digits + '_':
+            guardstr += '_'
+        else:
+            guardstr += c
+    # Generate header
+    f = open(sys.argv[1], 'wb')
+    f.write("""
+#ifndef __OFFSET_AUTO_H__%s
+#define __OFFSET_AUTO_H__%s
 // Auto generated file - please see defsyms.py.
 // This file contains symbol offsets of a compiled binary.
-"""
+
+""" % (guardstr, guardstr))
     for sym, addr in syms:
-        print "#define OFFSET_%s 0x%s" % (sym, addr)
-    print """
-#endif // __OFFSET16_AUTO_H
-"""
+        f.write("#define OFFSET_%s 0x%s\n" % (sym, addr))
+    f.write("""
+#endif // __OFFSET_AUTO_H__%s
+""" % (guardstr,))
 
 if __name__ == '__main__':
     main()