aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-user/elfload.c1
-rw-r--r--linux-user/strace.c4
-rw-r--r--vl.c4
3 files changed, 6 insertions, 3 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index fcae78f7f6..1fdd184f78 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 cc0f4d10d6..a8baebceac 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);
}
}
diff --git a/vl.c b/vl.c
index d7da9b57af..dec8d4f499 100644
--- a/vl.c
+++ b/vl.c
@@ -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