| # Copyright (C) 2013-2023 Free Software Foundation, Inc. | |
| # Copying and distribution of this file, with or without modification, | |
| # are permitted in any medium without royalty provided the copyright | |
| # notice and this notice are preserved. This file is offered as-is, | |
| # without any warranty. | |
| import sys | |
| import re | |
| import time | |
| infname = sys.argv[1] | |
| inf = file(infname) | |
| print( | |
| """\ | |
| <?xml version="1.0"?> | |
| <!-- Copyright (C) 2009-%s Free Software Foundation, Inc. | |
| Copying and distribution of this file, with or without modification, | |
| are permitted in any medium without royalty provided the copyright | |
| notice and this notice are preserved. This file is offered as-is, | |
| without any warranty. --> | |
| <!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> | |
| <!-- This file was generated using the following file: | |
| %s | |
| The file mentioned above belongs to the Linux Kernel. | |
| Some small hand-edits were made. --> | |
| <syscalls_info>""" | |
| % (time.strftime("%Y"), infname) | |
| ) | |
| def record(name, number, comment=None): | |
| # nm = 'name="%s"' % name | |
| # s = ' <syscall %-30s number="%d"/>' % (nm, number) | |
| s = ' <syscall name="%s" number="%d"/>' % (name, number) | |
| if comment: | |
| s += " <!-- %s -->" % comment | |
| print(s) | |
| for line in inf: | |
| m = re.match(r"^#define __NR_(\w+)\s+\(__NR_SYSCALL_BASE\+\s*(\d+)\)", line) | |
| if m: | |
| record(m.group(1), int(m.group(2))) | |
| continue | |
| m = re.match(r"^\s+/\* (\d+) was sys_(\w+) \*/$", line) | |
| if m: | |
| record(m.group(2), int(m.group(1)), "removed") | |
| m = re.match(r"^#define __ARM_NR_(\w+)\s+\(__ARM_NR_BASE\+\s*(\d+)\)", line) | |
| if m: | |
| record("ARM_" + m.group(1), 0x0F0000 + int(m.group(2))) | |
| continue | |
| print("</syscalls_info>") |