36 lines
768 B
Python
36 lines
768 B
Python
|
#!/usr/bin/env python2
|
||
|
# coding: utf-8
|
||
|
"""
|
||
|
Generate a symbol table from nm output.
|
||
|
"""
|
||
|
|
||
|
import fileinput
|
||
|
|
||
|
def formatLine(line):
|
||
|
_, _, name = line.strip().split(" ")
|
||
|
if name == "abs":
|
||
|
# abs is a keyword, so we'll just pretend we don't have that
|
||
|
return
|
||
|
if name == "kernel_symbols_start" or name == "kernel_symbols_end":
|
||
|
# we also don't want to include ourselves...
|
||
|
return
|
||
|
zeroes = ", 0" # * (1 + 4 - ((len(name) + 1) % 4))
|
||
|
print """
|
||
|
extern %s
|
||
|
dd %s
|
||
|
db '%s'%s""" % (name, name, name, zeroes)
|
||
|
|
||
|
|
||
|
print "SECTION .symbols"
|
||
|
|
||
|
print "global kernel_symbols_start"
|
||
|
print "kernel_symbols_start:"
|
||
|
for line in fileinput.input():
|
||
|
formatLine(line)
|
||
|
|
||
|
print "global kernel_symbols_end"
|
||
|
print "kernel_symbols_end: ;"
|
||
|
|
||
|
|
||
|
|