Fix header guards produced by defsys.py

Issue spotted by Nguyen Anh Quynh
This commit is contained in:
Kevin O'Connor 2008-03-01 10:11:55 -05:00
parent 95576e7670
commit 596cf60bed
2 changed files with 26 additions and 9 deletions

View File

@ -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 $@"

View File

@ -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()