diff options
Diffstat (limited to 'gdb/syscalls/arm-linux.py')
-rw-r--r-- | gdb/syscalls/arm-linux.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/gdb/syscalls/arm-linux.py b/gdb/syscalls/arm-linux.py new file mode 100644 index 0000000..0814dd4 --- /dev/null +++ b/gdb/syscalls/arm-linux.py @@ -0,0 +1,60 @@ +# Copyright (C) 2013 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>') |