2021-04-28 00:41:55 +03:00
|
|
|
#!/usr/bin/env kuroko
|
|
|
|
'''
|
|
|
|
@brief Generate symbol table.
|
|
|
|
'''
|
|
|
|
import fileio
|
|
|
|
|
2021-05-31 04:47:02 +03:00
|
|
|
let size = 'quad'
|
2021-04-28 00:41:55 +03:00
|
|
|
|
|
|
|
def extern(sym):
|
|
|
|
print(f'.extern {sym}')
|
|
|
|
print(f'.type {sym}, @function')
|
|
|
|
|
|
|
|
def entry(sym):
|
|
|
|
print(f'.{size} {sym}')
|
|
|
|
print(f'.asciz "{sym}"')
|
|
|
|
|
|
|
|
let ignore = ['abs','kernel_symbols_start','kernel_symbols_end']
|
|
|
|
let lines = [x.strip().split(' ')[2] for x in fileio.stdin.readlines() if x not in ignore]
|
|
|
|
|
|
|
|
print('.section .symbols')
|
|
|
|
print()
|
|
|
|
for name in lines:
|
|
|
|
extern(name)
|
|
|
|
|
|
|
|
print('.global kernel_symbols_start')
|
|
|
|
print('kernel_symbols_start:')
|
|
|
|
print()
|
|
|
|
for name in lines:
|
|
|
|
entry(name)
|
|
|
|
|
|
|
|
print('.global kernel_symbols_end')
|
|
|
|
print('kernel_symbols_end:')
|