diff options
-rw-r--r-- | linux-user/elfload.c | 1 | ||||
-rw-r--r-- | linux-user/strace.c | 4 | ||||
-rw-r--r-- | vl.c | 4 |
3 files changed, 6 insertions, 3 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c index fcae78f..1fdd184 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1148,6 +1148,7 @@ int load_elf_binary(struct linux_binprm * bprm, struct target_pt_regs * regs, end_code = 0; start_data = 0; end_data = 0; + interp_ex.a_info = 0; for(i=0;i < elf_ex.e_phnum; i++) { if (elf_ppnt->p_type == PT_INTERP) { diff --git a/linux-user/strace.c b/linux-user/strace.c index cc0f4d1..a8baebc 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -178,7 +178,7 @@ print_execve(const struct syscallname *name, unlock_user(s, arg1, 0); for (arg_ptr_addr = arg2; ; arg_ptr_addr += sizeof(abi_ulong)) { - abi_ulong *arg_ptr, arg_addr, s_addr; + abi_ulong *arg_ptr, arg_addr; arg_ptr = lock_user(VERIFY_READ, arg_ptr_addr, sizeof(abi_ulong), 1); if (!arg_ptr) @@ -189,7 +189,7 @@ print_execve(const struct syscallname *name, break; if ((s = lock_user_string(arg_addr))) { gemu_log("\"%s\",", s); - unlock_user(s, s_addr, 0); + unlock_user(s, arg_addr, 0); } } @@ -7831,8 +7831,10 @@ static int main_loop(void) timeout = 0; } } else { - if (shutdown_requested) + if (shutdown_requested) { + ret = EXCP_INTERRUPT; break; + } timeout = 10; } #ifdef CONFIG_PROFILER |