summaryrefslogtreecommitdiffstats
path: root/build/scripts/rodata2asm.py
diff options
context:
space:
mode:
authoralexv-smirnov <[email protected]>2023-06-13 11:05:01 +0300
committeralexv-smirnov <[email protected]>2023-06-13 11:05:01 +0300
commitbf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0 (patch)
tree1d1df72c0541a59a81439842f46d95396d3e7189 /build/scripts/rodata2asm.py
parent8bfdfa9a9bd19bddbc58d888e180fbd1218681be (diff)
add ymake export to ydb
Diffstat (limited to 'build/scripts/rodata2asm.py')
-rw-r--r--build/scripts/rodata2asm.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/build/scripts/rodata2asm.py b/build/scripts/rodata2asm.py
new file mode 100644
index 00000000000..555639499f2
--- /dev/null
+++ b/build/scripts/rodata2asm.py
@@ -0,0 +1,31 @@
+import os
+import argparse
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Convert rodata into asm source with embedded file content')
+ parser.add_argument('symbol', help='symvol name exported from generated filr')
+ parser.add_argument('rodata', help='input .rodata file path')
+ parser.add_argument('asm', type=argparse.FileType('w', encoding='UTF-8'), help='destination .asm file path')
+ parser.add_argument('--elf', action='store_true')
+
+ args = parser.parse_args()
+
+ file_size = os.path.getsize(args.rodata)
+
+ args.asm.write('global ' + args.symbol + '\n')
+ args.asm.write('global ' + args.symbol + 'Size' + '\n')
+ args.asm.write('SECTION .rodata ALIGN=16\n')
+ args.asm.write(args.symbol + ':\nincbin "' + args.rodata + '"\n')
+ args.asm.write('align 4, db 0\n')
+ args.asm.write(args.symbol + 'Size:\ndd ' + str(file_size) + '\n')
+
+ if args.elf:
+ args.asm.write('size ' + args.symbol + ' ' + str(file_size) + '\n')
+ args.asm.write('size ' + args.symbol + 'Size 4\n')
+
+ args.asm.close()
+
+
+if __name__ == '__main__':
+ main()