generate_symbols.py 767 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/env python3
  2. """
  3. Generate a symbol table from nm output.
  4. """
  5. import sys
  6. # Write extern + type
  7. def extern(name):
  8. print(".extern %s" % (name))
  9. print(".type %s, @function" % (name))
  10. print("")
  11. # Write an entry
  12. def entry(name):
  13. print(".long %s" % (name))
  14. print(".asciz \"%s\"" % (name))
  15. print("")
  16. ignore = [ "abs", "kernel_symbols_start", "kernel_symbols_end" ]
  17. lines = [ x.strip().split(" ")[2] for x in sys.stdin.readlines() if x not in ignore ]
  18. # Generate the assembly
  19. print(".section .symbols")
  20. print("")
  21. for name in lines:
  22. extern(name)
  23. print(".global kernel_symbols_start")
  24. print("kernel_symbols_start:")
  25. print("")
  26. for name in lines:
  27. entry(name)
  28. print(".global kernel_symbols_end")
  29. print("kernel_symbols_end:")