about summary refs log tree commit diff stats
path: root/miasm2/os_dep/linux_stdlib.py
diff options
context:
space:
mode:
authorAjax <commial@gmail.com>2017-03-31 15:09:01 +0200
committerAjax <commial@gmail.com>2017-04-06 13:47:38 +0200
commit620c96e891d0ad356332713a23b39b9d2382470c (patch)
tree7ce86a2fcc502800a4c426a43cb362e17ed80002 /miasm2/os_dep/linux_stdlib.py
parentb1ed94019554b25d4d8924594f8868318e8a8c4a (diff)
downloadmiasm-620c96e891d0ad356332713a23b39b9d2382470c.tar.gz
miasm-620c96e891d0ad356332713a23b39b9d2382470c.zip
Introduce a naive "System V" calling convention
Diffstat (limited to 'miasm2/os_dep/linux_stdlib.py')
-rw-r--r--miasm2/os_dep/linux_stdlib.py56
1 files changed, 28 insertions, 28 deletions
diff --git a/miasm2/os_dep/linux_stdlib.py b/miasm2/os_dep/linux_stdlib.py
index b05b2cd9..683104d0 100644
--- a/miasm2/os_dep/linux_stdlib.py
+++ b/miasm2/os_dep/linux_stdlib.py
@@ -25,9 +25,9 @@ def xxx_isprint(jitter):
 
     checks for any printable character including space.
     '''
-    ret_addr, args = jitter.func_args_stdcall(['c'])
+    ret_addr, args = jitter.func_args_systemv(['c'])
     ret = 1 if chr(args.c & 0xFF) in printable else 0
-    return jitter.func_ret_stdcall(ret_addr, ret)
+    return jitter.func_ret_systemv(ret_addr, ret)
 
 
 def xxx_memcpy(jitter):
@@ -37,9 +37,9 @@ def xxx_memcpy(jitter):
 
     copies n bytes from memory area src to memory area dest.
     '''
-    ret_addr, args = jitter.func_args_stdcall(['dest', 'src', 'n'])
+    ret_addr, args = jitter.func_args_systemv(['dest', 'src', 'n'])
     jitter.vm.set_mem(args.dest, jitter.vm.get_mem(args.src, args.n))
-    return jitter.func_ret_stdcall(ret_addr, args.dest)
+    return jitter.func_ret_systemv(ret_addr, args.dest)
 
 
 def xxx_memset(jitter):
@@ -50,9 +50,9 @@ def xxx_memset(jitter):
     fills the first n bytes of the memory area pointed to by s with the constant
     byte c.'''
 
-    ret_addr, args = jitter.func_args_stdcall(['dest', 'c', 'n'])
+    ret_addr, args = jitter.func_args_systemv(['dest', 'c', 'n'])
     jitter.vm.set_mem(args.dest, chr(args.c & 0xFF) * args.n)
-    return jitter.func_ret_stdcall(ret_addr, args.dest)
+    return jitter.func_ret_systemv(ret_addr, args.dest)
 
 
 def xxx_puts(jitter):
@@ -62,7 +62,7 @@ def xxx_puts(jitter):
 
     writes the string s and a trailing newline to stdout.
     '''
-    ret_addr, args = jitter.func_args_stdcall(['s'])
+    ret_addr, args = jitter.func_args_systemv(['s'])
     index = args.s
     char = jitter.vm.get_mem(index, 1)
     while char != '\x00':
@@ -70,7 +70,7 @@ def xxx_puts(jitter):
         index += 1
         char = jitter.vm.get_mem(index, 1)
     stdout.write('\n')
-    return jitter.func_ret_stdcall(ret_addr, 1)
+    return jitter.func_ret_systemv(ret_addr, 1)
 
 
 def get_fmt_args(jitter, fmt, cur_arg):
@@ -89,9 +89,9 @@ def get_fmt_args(jitter, fmt, cur_arg):
                 if char.lower() in '%cdfsux':
                     break
             if token.endswith('s'):
-                arg = jitter.get_str_ansi(jitter.get_arg_n_stdcall(cur_arg))
+                arg = jitter.get_str_ansi(jitter.get_arg_n_systemv(cur_arg))
             else:
-                arg = jitter.get_arg_n_stdcall(cur_arg)
+                arg = jitter.get_arg_n_systemv(cur_arg)
             char = token % arg
             cur_arg += 1
         output += char
@@ -99,67 +99,67 @@ def get_fmt_args(jitter, fmt, cur_arg):
 
 
 def xxx_snprintf(jitter):
-    ret_addr, args = jitter.func_args_stdcall(['string', 'size', 'fmt'])
+    ret_addr, args = jitter.func_args_systemv(['string', 'size', 'fmt'])
     cur_arg, fmt = 3, args.fmt
     size = args.size if args.size else 1
     output = get_fmt_args(jitter, fmt, cur_arg)
     output = output[:size - 1]
     ret = len(output)
     jitter.vm.set_mem(args.string, output + '\x00')
-    return jitter.func_ret_stdcall(ret_addr, ret)
+    return jitter.func_ret_systemv(ret_addr, ret)
 
 
 def xxx_sprintf(jitter):
-    ret_addr, args = jitter.func_args_stdcall(['string', 'fmt'])
+    ret_addr, args = jitter.func_args_systemv(['string', 'fmt'])
     cur_arg, fmt = 2, args.fmt
     output = get_fmt_args(jitter, fmt, cur_arg)
     ret = len(output)
     jitter.vm.set_mem(args.string, output + '\x00')
-    return jitter.func_ret_stdcall(ret_addr, ret)
+    return jitter.func_ret_systemv(ret_addr, ret)
 
 
 def xxx_printf(jitter):
-    ret_addr, args = jitter.func_args_stdcall(['fmt'])
+    ret_addr, args = jitter.func_args_systemv(['fmt'])
     cur_arg, fmt = 1, args.fmt
     output = get_fmt_args(jitter, fmt, cur_arg)
     ret = len(output)
     print output,
-    return jitter.func_ret_stdcall(ret_addr, ret)
+    return jitter.func_ret_systemv(ret_addr, ret)
 
 
 def xxx_strcpy(jitter):
-    ret_ad, args = jitter.func_args_stdcall(["dst", "src"])
+    ret_ad, args = jitter.func_args_systemv(["dst", "src"])
     str_src = jitter.get_str_ansi(args.src) + '\x00'
     jitter.vm.set_mem(args.dst, str_src)
-    jitter.func_ret_stdcall(ret_ad, args.dst)
+    jitter.func_ret_systemv(ret_ad, args.dst)
 
 
 def xxx_strlen(jitter):
-    ret_ad, args = jitter.func_args_stdcall(["src"])
+    ret_ad, args = jitter.func_args_systemv(["src"])
     str_src = jitter.get_str_ansi(args.src)
-    jitter.func_ret_stdcall(ret_ad, len(str_src))
+    jitter.func_ret_systemv(ret_ad, len(str_src))
 
 
 def xxx_malloc(jitter):
-    ret_ad, args = jitter.func_args_stdcall(["msize"])
+    ret_ad, args = jitter.func_args_systemv(["msize"])
     addr = linobjs.heap.alloc(jitter, args.msize)
-    jitter.func_ret_stdcall(ret_ad, addr)
+    jitter.func_ret_systemv(ret_ad, addr)
 
 
 def xxx_free(jitter):
-    ret_ad, args = jitter.func_args_stdcall(["ptr"])
-    jitter.func_ret_stdcall(ret_ad, 0)
+    ret_ad, args = jitter.func_args_systemv(["ptr"])
+    jitter.func_ret_systemv(ret_ad, 0)
 
 
 def xxx_strcmp(jitter):
-    ret_ad, args = jitter.func_args_stdcall(["ptr_str1", "ptr_str2"])
+    ret_ad, args = jitter.func_args_systemv(["ptr_str1", "ptr_str2"])
     s1 = jitter.get_str_ansi(args.ptr_str1)
     s2 = jitter.get_str_ansi(args.ptr_str2)
-    jitter.func_ret_stdcall(ret_ad, cmp(s1, s2))
+    jitter.func_ret_systemv(ret_ad, cmp(s1, s2))
 
 
 def xxx_strncmp(jitter):
-    ret_ad, args = jitter.func_args_stdcall(["ptr_str1", "ptr_str2", "size"])
+    ret_ad, args = jitter.func_args_systemv(["ptr_str1", "ptr_str2", "size"])
     s1 = jitter.get_str_ansi(args.ptr_str1, args.size)
     s2 = jitter.get_str_ansi(args.ptr_str2, args.size)
-    jitter.func_ret_stdcall(ret_ad, cmp(s1, s2))
+    jitter.func_ret_systemv(ret_ad, cmp(s1, s2))