xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/syscalls/arm-linux.py (revision 82d56013d7b633d116a93943de88e08335357a7c)
1# Copyright (C) 2013-2019 Free Software Foundation, Inc.
2
3# Copying and distribution of this file, with or without modification,
4# are permitted in any medium without royalty provided the copyright
5# notice and this notice are preserved.  This file is offered as-is,
6# without any warranty.
7
8import sys
9import re
10import time
11
12infname = sys.argv[1]
13inf = file(infname)
14
15print("""\
16<?xml version="1.0"?>
17<!-- Copyright (C) 2009-%s Free Software Foundation, Inc.
18
19     Copying and distribution of this file, with or without modification,
20     are permitted in any medium without royalty provided the copyright
21     notice and this notice are preserved.  This file is offered as-is,
22     without any warranty. -->
23
24<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
25
26<!-- This file was generated using the following file:
27
28     %s
29
30     The file mentioned above belongs to the Linux Kernel.
31     Some small hand-edits were made. -->
32
33<syscalls_info>""" % (time.strftime("%Y"), infname))
34
35def record(name, number, comment=None):
36    #nm = 'name="%s"' % name
37    #s = '  <syscall %-30s number="%d"/>' % (nm, number)
38    s = '  <syscall name="%s" number="%d"/>' % (name, number)
39    if comment:
40        s += ' <!-- %s -->' % comment
41    print(s)
42
43for line in inf:
44    m = re.match(r'^#define __NR_(\w+)\s+\(__NR_SYSCALL_BASE\+\s*(\d+)\)',
45                 line)
46    if m:
47        record(m.group(1), int(m.group(2)))
48        continue
49
50    m = re.match(r'^\s+/\* (\d+) was sys_(\w+) \*/$', line)
51    if m:
52        record(m.group(2), int(m.group(1)), 'removed')
53
54    m = re.match(r'^#define __ARM_NR_(\w+)\s+\(__ARM_NR_BASE\+\s*(\d+)\)',
55                 line)
56    if m:
57        record('ARM_'+m.group(1), 0x0f0000+int(m.group(2)))
58        continue
59
60print('</syscalls_info>')
61