OSDN Git Service

target/hppa: Remove get_temp_tl
[qmiga/qemu.git] / scripts / feature_to_c.py
1 #!/usr/bin/env python3
2 # SPDX-License-Identifier: GPL-2.0-or-later
3
4 import os, sys
5
6 def writeliteral(indent, bytes):
7     sys.stdout.write(' ' * indent)
8     sys.stdout.write('"')
9     quoted = True
10
11     for c in bytes:
12         if not quoted:
13             sys.stdout.write('\n')
14             sys.stdout.write(' ' * indent)
15             sys.stdout.write('"')
16             quoted = True
17
18         if c == b'"'[0]:
19             sys.stdout.write('\\"')
20         elif c == b'\\'[0]:
21             sys.stdout.write('\\\\')
22         elif c == b'\n'[0]:
23             sys.stdout.write('\\n"')
24             quoted = False
25         elif c >= 32 and c < 127:
26             sys.stdout.write(c.to_bytes(1, 'big').decode())
27         else:
28             sys.stdout.write(f'\{c:03o}')
29
30     if quoted:
31         sys.stdout.write('"')
32
33 sys.stdout.write('#include "qemu/osdep.h"\n' \
34                  '#include "exec/gdbstub.h"\n' \
35                  '\n'
36                  'const GDBFeature gdb_static_features[] = {\n')
37
38 for input in sys.argv[1:]:
39     with open(input, 'rb') as file:
40         read = file.read()
41
42     sys.stdout.write('    {\n')
43     writeliteral(8, bytes(os.path.basename(input), 'utf-8'))
44     sys.stdout.write(',\n')
45     writeliteral(8, read)
46     sys.stdout.write('\n    },\n')
47
48 sys.stdout.write('    { NULL }\n};\n')