diff -r 1f3155791ceb -r 0050a669653b src/sim/syscall_emul.cc --- a/src/sim/syscall_emul.cc Fri Jul 16 21:23:40 2010 +0100 +++ b/src/sim/syscall_emul.cc Fri Jul 16 21:23:42 2010 +0100 @@ -186,7 +186,10 @@ { int index = 0; int target_fd = p->getSyscallArg(tc, index); - int status = close(p->sim_fd(target_fd)); + int sim_fd = p->sim_fd(target_fd); + int status = 0; + if (sim_fd > 2) + close(sim_fd); if (status >= 0) p->free_fd(target_fd); return status;