Remove dead code from gensyscalls.py.
Change-Id: I0df69f8fd990f829ccbfcd5123c17b523d5a4d45
This commit is contained in:
parent
f6afd3b670
commit
cd6780b167
@ -10,12 +10,6 @@ import getpass
|
|||||||
|
|
||||||
from bionic_utils import *
|
from bionic_utils import *
|
||||||
|
|
||||||
# set this to 1 if you want to generate thumb stubs
|
|
||||||
gen_thumb_stubs = 0
|
|
||||||
|
|
||||||
# set this to 1 if you want to generate ARM EABI stubs
|
|
||||||
gen_eabi_stubs = 1
|
|
||||||
|
|
||||||
# get the root Bionic directory, simply this script's dirname
|
# get the root Bionic directory, simply this script's dirname
|
||||||
#
|
#
|
||||||
bionic_root = find_bionic_root()
|
bionic_root = find_bionic_root()
|
||||||
@ -32,7 +26,7 @@ print "bionic_root is %s" % bionic_root
|
|||||||
bionic_temp = "/tmp/bionic_gensyscalls/"
|
bionic_temp = "/tmp/bionic_gensyscalls/"
|
||||||
|
|
||||||
# all architectures, update as you see fit
|
# all architectures, update as you see fit
|
||||||
all_archs = [ "arm", "x86", "mips" ]
|
all_archs = [ "arm", "mips", "x86" ]
|
||||||
|
|
||||||
def make_dir( path ):
|
def make_dir( path ):
|
||||||
path = os.path.abspath(path)
|
path = os.path.abspath(path)
|
||||||
@ -47,6 +41,7 @@ def create_file( relpath ):
|
|||||||
make_dir(dir)
|
make_dir(dir)
|
||||||
return open( bionic_temp + relpath, "w" )
|
return open( bionic_temp + relpath, "w" )
|
||||||
|
|
||||||
|
#
|
||||||
# x86 assembler templates for each syscall stub
|
# x86 assembler templates for each syscall stub
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -75,8 +70,10 @@ x86_return = """ ret
|
|||||||
END(%(fname)s)
|
END(%(fname)s)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
#
|
||||||
# ARM assembler templates for each syscall stub
|
# ARM assembler templates for each syscall stub
|
||||||
#
|
#
|
||||||
|
|
||||||
arm_header = """/* autogenerated by gensyscalls.py */
|
arm_header = """/* autogenerated by gensyscalls.py */
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
#include <sys/linux-syscalls.h>
|
#include <sys/linux-syscalls.h>
|
||||||
@ -84,29 +81,6 @@ arm_header = """/* autogenerated by gensyscalls.py */
|
|||||||
ENTRY(%(fname)s)
|
ENTRY(%(fname)s)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
arm_footer = """\
|
|
||||||
END(%(fname)s)
|
|
||||||
"""
|
|
||||||
|
|
||||||
arm_call_default = arm_header + """\
|
|
||||||
swi #%(idname)s
|
|
||||||
movs r0, r0
|
|
||||||
bxpl lr
|
|
||||||
b __set_syscall_errno
|
|
||||||
""" + arm_footer
|
|
||||||
|
|
||||||
arm_call_long = arm_header + """\
|
|
||||||
.save {r4, r5, lr}
|
|
||||||
stmfd sp!, {r4, r5, lr}
|
|
||||||
ldr r4, [sp, #12]
|
|
||||||
ldr r5, [sp, #16]
|
|
||||||
swi # %(idname)s
|
|
||||||
ldmfd sp!, {r4, r5, lr}
|
|
||||||
movs r0, r0
|
|
||||||
bxpl lr
|
|
||||||
b __set_syscall_errno
|
|
||||||
""" + arm_footer
|
|
||||||
|
|
||||||
arm_eabi_call_default = arm_header + """\
|
arm_eabi_call_default = arm_header + """\
|
||||||
mov ip, r7
|
mov ip, r7
|
||||||
ldr r7, =%(idname)s
|
ldr r7, =%(idname)s
|
||||||
@ -115,7 +89,8 @@ arm_eabi_call_default = arm_header + """\
|
|||||||
movs r0, r0
|
movs r0, r0
|
||||||
bxpl lr
|
bxpl lr
|
||||||
b __set_syscall_errno
|
b __set_syscall_errno
|
||||||
""" + arm_footer
|
END(%(fname)s)
|
||||||
|
"""
|
||||||
|
|
||||||
arm_eabi_call_long = arm_header + """\
|
arm_eabi_call_long = arm_header + """\
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
@ -128,61 +103,13 @@ arm_eabi_call_long = arm_header + """\
|
|||||||
movs r0, r0
|
movs r0, r0
|
||||||
bxpl lr
|
bxpl lr
|
||||||
b __set_syscall_errno
|
b __set_syscall_errno
|
||||||
""" + arm_footer
|
END(%(fname)s)
|
||||||
|
"""
|
||||||
|
|
||||||
# ARM thumb assembler templates for each syscall stub
|
|
||||||
#
|
#
|
||||||
thumb_header = """/* autogenerated by gensyscalls.py */
|
|
||||||
.text
|
|
||||||
.type %(fname)s, #function
|
|
||||||
.globl %(fname)s
|
|
||||||
.align 4
|
|
||||||
.thumb_func
|
|
||||||
.fnstart
|
|
||||||
|
|
||||||
#define __thumb__
|
|
||||||
#include <sys/linux-syscalls.h>
|
|
||||||
|
|
||||||
|
|
||||||
%(fname)s:
|
|
||||||
"""
|
|
||||||
|
|
||||||
thumb_call_default = thumb_header + """\
|
|
||||||
.save {r7,lr}
|
|
||||||
push {r7,lr}
|
|
||||||
ldr r7, =%(idname)s
|
|
||||||
swi #0
|
|
||||||
tst r0, r0
|
|
||||||
bmi 1f
|
|
||||||
pop {r7,pc}
|
|
||||||
1:
|
|
||||||
neg r0, r0
|
|
||||||
ldr r1, =__set_errno
|
|
||||||
blx r1
|
|
||||||
pop {r7,pc}
|
|
||||||
.fnend
|
|
||||||
"""
|
|
||||||
|
|
||||||
thumb_call_long = thumb_header + """\
|
|
||||||
.save {r4,r5,r7,lr}
|
|
||||||
push {r4,r5,r7,lr}
|
|
||||||
ldr r4, [sp,#16]
|
|
||||||
ldr r5, [sp,#20]
|
|
||||||
ldr r7, =%(idname)s
|
|
||||||
swi #0
|
|
||||||
tst r0, r0
|
|
||||||
bmi 1f
|
|
||||||
pop {r4,r5,r7,pc}
|
|
||||||
1:
|
|
||||||
neg r0, r0
|
|
||||||
ldr r1, =__set_errno
|
|
||||||
blx r1
|
|
||||||
pop {r4,r5,r7,pc}
|
|
||||||
.fnend
|
|
||||||
"""
|
|
||||||
|
|
||||||
# mips assembler templates for each syscall stub
|
# mips assembler templates for each syscall stub
|
||||||
#
|
#
|
||||||
|
|
||||||
mips_call = """/* autogenerated by gensyscalls.py */
|
mips_call = """/* autogenerated by gensyscalls.py */
|
||||||
#include <sys/linux-syscalls.h>
|
#include <sys/linux-syscalls.h>
|
||||||
.text
|
.text
|
||||||
@ -229,7 +156,7 @@ def param_uses_64bits(param):
|
|||||||
|
|
||||||
def count_arm_param_registers(params):
|
def count_arm_param_registers(params):
|
||||||
"""This function is used to count the number of register used
|
"""This function is used to count the number of register used
|
||||||
to pass parameters when invoking a thumb or ARM system call.
|
to pass parameters when invoking an ARM system call.
|
||||||
This is because the ARM EABI mandates that 64-bit quantities
|
This is because the ARM EABI mandates that 64-bit quantities
|
||||||
must be passed in an even+odd register pair. So, for example,
|
must be passed in an even+odd register pair. So, for example,
|
||||||
something like:
|
something like:
|
||||||
@ -326,15 +253,6 @@ class State:
|
|||||||
result += x86_return % t
|
result += x86_return % t
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def arm_genstub(self,fname, flags, idname):
|
|
||||||
t = { "fname" : fname,
|
|
||||||
"idname" : idname }
|
|
||||||
if flags:
|
|
||||||
numargs = int(flags)
|
|
||||||
if numargs > 4:
|
|
||||||
return arm_call_long % t
|
|
||||||
return arm_call_default % t
|
|
||||||
|
|
||||||
|
|
||||||
def arm_eabi_genstub(self,fname, flags, idname):
|
def arm_eabi_genstub(self,fname, flags, idname):
|
||||||
t = { "fname" : fname,
|
t = { "fname" : fname,
|
||||||
@ -346,15 +264,6 @@ class State:
|
|||||||
return arm_eabi_call_default % t
|
return arm_eabi_call_default % t
|
||||||
|
|
||||||
|
|
||||||
def thumb_genstub(self,fname, flags, idname):
|
|
||||||
t = { "fname" : fname,
|
|
||||||
"idname" : idname }
|
|
||||||
if flags:
|
|
||||||
numargs = int(flags)
|
|
||||||
if numargs > 4:
|
|
||||||
return thumb_call_long % t
|
|
||||||
return thumb_call_default % t
|
|
||||||
|
|
||||||
def mips_genstub(self,fname, idname):
|
def mips_genstub(self,fname, idname):
|
||||||
t = { "fname" : fname,
|
t = { "fname" : fname,
|
||||||
"idname" : idname }
|
"idname" : idname }
|
||||||
@ -373,13 +282,7 @@ class State:
|
|||||||
|
|
||||||
if t["common"] >= 0 or t["armid"] >= 0:
|
if t["common"] >= 0 or t["armid"] >= 0:
|
||||||
num_regs = count_arm_param_registers(syscall_params)
|
num_regs = count_arm_param_registers(syscall_params)
|
||||||
if gen_thumb_stubs:
|
t["asm-arm"] = self.arm_eabi_genstub(syscall_func,num_regs,"__NR_"+syscall_name)
|
||||||
t["asm-thumb"] = self.thumb_genstub(syscall_func,num_regs,"__NR_"+syscall_name)
|
|
||||||
else:
|
|
||||||
if gen_eabi_stubs:
|
|
||||||
t["asm-arm"] = self.arm_eabi_genstub(syscall_func,num_regs,"__NR_"+syscall_name)
|
|
||||||
else:
|
|
||||||
t["asm-arm"] = self.arm_genstub(syscall_func,num_regs,"__NR_"+syscall_name)
|
|
||||||
|
|
||||||
if t["common"] >= 0 or t["x86id"] >= 0:
|
if t["common"] >= 0 or t["x86id"] >= 0:
|
||||||
num_regs = count_generic_param_registers(syscall_params)
|
num_regs = count_generic_param_registers(syscall_params)
|
||||||
@ -391,6 +294,7 @@ class State:
|
|||||||
E("cid for dispatch syscalls is only supported for x86 in "
|
E("cid for dispatch syscalls is only supported for x86 in "
|
||||||
"'%s'" % syscall_name)
|
"'%s'" % syscall_name)
|
||||||
return
|
return
|
||||||
|
|
||||||
if t["common"] >= 0 or t["mipsid"] >= 0:
|
if t["common"] >= 0 or t["mipsid"] >= 0:
|
||||||
t["asm-mips"] = self.mips_genstub(syscall_func,"__NR_"+syscall_name)
|
t["asm-mips"] = self.mips_genstub(syscall_func,"__NR_"+syscall_name)
|
||||||
|
|
||||||
@ -464,7 +368,7 @@ class State:
|
|||||||
fp.write( "# auto-generated by gensyscalls.py, do not touch\n" )
|
fp.write( "# auto-generated by gensyscalls.py, do not touch\n" )
|
||||||
fp.write( "syscall_src := \n" )
|
fp.write( "syscall_src := \n" )
|
||||||
arch_test = {
|
arch_test = {
|
||||||
"arm": lambda x: x.has_key("asm-arm") or x.has_key("asm-thumb"),
|
"arm": lambda x: x.has_key("asm-arm"),
|
||||||
"x86": lambda x: x.has_key("asm-x86"),
|
"x86": lambda x: x.has_key("asm-x86"),
|
||||||
"mips": lambda x: x.has_key("asm-mips")
|
"mips": lambda x: x.has_key("asm-mips")
|
||||||
}
|
}
|
||||||
@ -488,14 +392,6 @@ class State:
|
|||||||
fp.close()
|
fp.close()
|
||||||
self.new_stubs.append( fname )
|
self.new_stubs.append( fname )
|
||||||
|
|
||||||
if sc.has_key("asm-thumb") and 'arm' in all_archs:
|
|
||||||
fname = "arch-arm/syscalls/%s.S" % sc["func"]
|
|
||||||
D2( ">>> generating "+fname )
|
|
||||||
fp = create_file( fname )
|
|
||||||
fp.write(sc["asm-thumb"])
|
|
||||||
fp.close()
|
|
||||||
self.new_stubs.append( fname )
|
|
||||||
|
|
||||||
if sc.has_key("asm-x86") and 'x86' in all_archs:
|
if sc.has_key("asm-x86") and 'x86' in all_archs:
|
||||||
fname = "arch-x86/syscalls/%s.S" % sc["func"]
|
fname = "arch-x86/syscalls/%s.S" % sc["func"]
|
||||||
D2( ">>> generating "+fname )
|
D2( ">>> generating "+fname )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user