summaryrefslogtreecommitdiff
path: root/tools/gen_symtab.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gen_symtab.py')
-rwxr-xr-xtools/gen_symtab.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/gen_symtab.py b/tools/gen_symtab.py
new file mode 100755
index 00000000..b691da12
--- /dev/null
+++ b/tools/gen_symtab.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+'''
+Embedded symbol table generator.
+'''
+
+import sys
+
+symtab_size = 0
+symtab = []
+
+for line in sys.stdin:
+ line = line.strip()
+ parts = line.split(' ')
+ del parts[2]
+
+ if len(parts) != 3 or parts[2].startswith("__func__."):
+ continue
+
+ symtab.append("{ 0x%s, 0x%s, \"%s\" }" % tuple(parts))
+ symtab_size += 1
+
+print("#include <kern/symbol.h>")
+print("const struct symbol symbol_table[] __symbol_table = {")
+
+for elem in symtab:
+ print(" " + elem + ",",)
+
+print("};")
+print("const size_t symbol_table_size = %d;" % symtab_size)
+print("const struct symbol *symbol_table_ptr = symbol_table;")