Add dup() support (from Antti Miettinen).

--HG--
extra : convert_revision : 72c834666afa3c353da026617ad5e7a762eb645f
diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index e728906..cf90d8f 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -301,6 +301,19 @@
 
 
 SyscallReturn
+dupFunc(SyscallDesc *desc, int num, Process *process, ThreadContext *tc)
+{
+    int fd = process->sim_fd(tc->getSyscallArg(0));
+
+    if (fd < 0)
+        return -EBADF;
+
+    int result = dup(fd);
+    return (result == -1) ? -errno : process->alloc_fd(result);
+}
+
+
+SyscallReturn
 fcntlFunc(SyscallDesc *desc, int num, Process *process,
           ThreadContext *tc)
 {