255,7 → 255,7 |
} |
} |
|
void event_syscall(unsigned thread_id, unsigned thread_hash, unsigned sc_id, int sc_rc) |
void event_syscall_b(unsigned thread_id, unsigned thread_hash, unsigned sc_id, int sc_rc) |
{ |
unsigned sc_args[6]; |
int rv_type; |
277,6 → 277,29 |
/* Print syscall name, id and arguments */ |
printf("%s", syscall_desc[sc_id].name); |
print_sc_args(sc_args, syscall_desc[sc_id].n_args); |
|
async_serialize_end(); |
} |
|
void event_syscall_e(unsigned thread_id, unsigned thread_hash, unsigned sc_id, int sc_rc) |
{ |
unsigned sc_args[6]; |
int rv_type; |
int rc; |
|
/* Read syscall arguments */ |
rc = debug_args_read(phoneid, thread_hash, sc_args); |
|
async_serialize_start(); |
|
// printf("[%d] ", thread_id); |
|
if (rc < 0) { |
printf("error\n"); |
async_serialize_end(); |
return; |
} |
|
rv_type = syscall_desc[sc_id].rv_type; |
print_sc_retval(sc_rc, rv_type); |
|
339,9 → 362,12 |
|
if (rc >= 0) { |
switch (ev_type) { |
case UDEBUG_EVENT_SYSCALL: |
event_syscall(thread_id, thread_hash, val0, (int)val1); |
case UDEBUG_EVENT_SYSCALL_B: |
event_syscall_b(thread_id, thread_hash, val0, (int)val1); |
break; |
case UDEBUG_EVENT_SYSCALL_E: |
event_syscall_e(thread_id, thread_hash, val0, (int)val1); |
break; |
case UDEBUG_EVENT_STOP: |
printf("stop event\n"); |
printf("waiting for resume\n"); |