summaryrefslogtreecommitdiff
path: root/tools/gen_symtab.py
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2018-06-26 22:08:09 +0200
committerRichard Braun <rbraun@sceen.net>2018-06-26 22:08:09 +0200
commit838d2f6f9bb85b849a382262e58f421268ad80ea (patch)
treefef4c1b3ef8d05a68e5d02247e0739b820076c19 /tools/gen_symtab.py
parent90d079aea8aad73d7b867a0e215f8c3b41a1113f (diff)
Add support for an embedded symbol table
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;")