diff options
author | Elliott Hughes <enh@google.com> | 2013-09-25 22:43:36 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2013-09-26 08:57:17 -0700 |
commit | d612165c6705379aa50144afc35aa40c16793728 (patch) | |
tree | 211edb774ff41f0983e730b5f8d1eff99a04b61c /libc/tools/bionic_utils.py | |
parent | a1c1a3344de1c0a35126ea6f43e1d55184f078da (diff) | |
download | bionic-d612165c6705379aa50144afc35aa40c16793728.zip bionic-d612165c6705379aa50144afc35aa40c16793728.tar.gz bionic-d612165c6705379aa50144afc35aa40c16793728.tar.bz2 |
Make it easier to add syscalls for another architecture.
Much of the per-architecture duplication can be removed, so let's do so
before we add the 64-bit architectures.
Change-Id: Ieb796503c8e5353ea38c3bab768bb9a690c9a767
Diffstat (limited to 'libc/tools/bionic_utils.py')
-rw-r--r-- | libc/tools/bionic_utils.py | 60 |
1 files changed, 21 insertions, 39 deletions
diff --git a/libc/tools/bionic_utils.py b/libc/tools/bionic_utils.py index baa41be..eed9001 100644 --- a/libc/tools/bionic_utils.py +++ b/libc/tools/bionic_utils.py @@ -2,9 +2,7 @@ import sys, os, commands, string -# support Bionic architectures, add new ones as appropriate -# -bionic_archs = [ "arm", "x86", "mips" ] +all_arches = [ "arm", "mips", "x86" ] # basic debugging trace support # call D_setlevel to set the verbosity level @@ -51,7 +49,7 @@ class SysCallsTxtParser: """ parse a syscall spec line. line processing, format is - return type func_name[:syscall_name[:call_id]] ( [paramlist] ) architecture_list + return type func_name[:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list """ pos_lparen = line.find('(') E = self.E @@ -71,7 +69,7 @@ class SysCallsTxtParser: syscall_func = return_type[-1] return_type = string.join(return_type[:-1],' ') - call_id = -1 + socketcall_id = -1 pos_colon = syscall_func.find(':') if pos_colon < 0: @@ -81,7 +79,7 @@ class SysCallsTxtParser: E("misplaced colon in '%s'" % line) return - # now find if there is a call_id for a dispatch-type syscall + # now find if there is a socketcall_id for a dispatch-type syscall # after the optional 2nd colon pos_colon2 = syscall_func.find(':', pos_colon + 1) if pos_colon2 < 0: @@ -92,7 +90,7 @@ class SysCallsTxtParser: E("misplaced colon2 in '%s'" % line) return syscall_name = syscall_func[(pos_colon+1):pos_colon2] - call_id = int(syscall_func[pos_colon2+1:]) + socketcall_id = int(syscall_func[pos_colon2+1:]) syscall_func = syscall_func[:pos_colon] if pos_rparen > pos_lparen+1: @@ -102,51 +100,35 @@ class SysCallsTxtParser: syscall_params = [] params = "void" + t = { + "name" : syscall_name, + "func" : syscall_func, + "params" : syscall_params, + "decl" : "%-15s %s (%s);" % (return_type, syscall_func, params), + "socketcall_id" : socketcall_id + } + # Parse the architecture list. - syscall_common = -1 - syscall_arm = -1 - syscall_x86 = -1 - syscall_mips = -1 arch_list = line[pos_rparen+1:].strip() if arch_list == "custom": pass elif arch_list == "all": - syscall_common = 1 + for arch in all_arches: + t[arch] = True else: for arch in string.split(arch_list, ','): - if arch == "arm": - syscall_arm = 1 - elif arch == "x86": - syscall_x86 = 1 - elif arch == "mips": - syscall_mips = 1 + if arch in all_arches: + t[arch] = True else: E("invalid syscall architecture list in '%s'" % line) return + self.syscalls.append(t) + global verbose if verbose >= 2: - if call_id == -1: - if syscall_common == -1: - print "%s: %d,%d,%d" % (syscall_name, syscall_arm, syscall_x86, syscall_mips) - else: - print "%s: %d" % (syscall_name, syscall_common) - else: - if syscall_common == -1: - print "%s(%d): %d,%d,%d" % (syscall_name, call_id, syscall_arm, syscall_x86, syscall_mips) - else: - print "%s(%d): %d" % (syscall_name, call_id, syscall_common) - - t = { "armid" : syscall_arm, - "x86id" : syscall_x86, - "mipsid" : syscall_mips, - "common" : syscall_common, - "cid" : call_id, - "name" : syscall_name, - "func" : syscall_func, - "params" : syscall_params, - "decl" : "%-15s %s (%s);" % (return_type, syscall_func, params) } - self.syscalls.append(t) + print t + def parse_file(self, file_path): D2("parse_file: %s" % file_path) |