Add chmod/chown/poll/ioctl/utimes/fabs

Adds __ioctol.c, chmod.c, chown.c, poll.c and utimes.c.
Removes enosys definitions from libc_common_stubs and enosys.c
Adds fabs to libm.
diff --git a/libc/Makefile b/libc/Makefile
index 813afdc..a62205d 100644
--- a/libc/Makefile
+++ b/libc/Makefile
@@ -362,6 +362,8 @@
   arch-nacl/syscalls/access.c \
   arch-nacl/syscalls/bind.c \
   arch-nacl/syscalls/chdir.c \
+  arch-nacl/syscalls/chmod.c \
+  arch-nacl/syscalls/chown.c \
   arch-nacl/syscalls/clock_getres.c \
   arch-nacl/syscalls/clock_gettime.c \
   arch-nacl/syscalls/close.c \
@@ -386,6 +388,7 @@
   arch-nacl/syscalls/gettid.c \
   arch-nacl/syscalls/gettimeofday.c \
   arch-nacl/syscalls/getuid.c \
+  arch-nacl/syscalls/__ioctl.c \
   arch-nacl/syscalls/kill.c \
   arch-nacl/syscalls/listen.c \
   arch-nacl/syscalls/lseek.c \
@@ -405,6 +408,7 @@
   arch-nacl/syscalls/nacl_timeval.c \
   arch-nacl/syscalls/nanosleep.c \
   arch-nacl/syscalls/__open.c \
+  arch-nacl/syscalls/poll.c \
   arch-nacl/syscalls/pipe.c \
   arch-nacl/syscalls/read.c \
   arch-nacl/syscalls/recvfrom.c \
@@ -422,6 +426,7 @@
   arch-nacl/syscalls/symlink.c \
   arch-nacl/syscalls/truncate.c \
   arch-nacl/syscalls/unlink.c \
+  arch-nacl/syscalls/utimes.c \
   arch-nacl/syscalls/write.c \
   arch-nacl/syscalls/writev.c \
   arch-nacl/tmp/libc_common_stubs.c \
diff --git a/libc/arch-nacl/syscalls/__ioctl.c b/libc/arch-nacl/syscalls/__ioctl.c
new file mode 100644
index 0000000..805fe6d
--- /dev/null
+++ b/libc/arch-nacl/syscalls/__ioctl.c
@@ -0,0 +1,11 @@
+// Copyright 2014 Google Inc. All Rights Reserved
+
+#include <errno.h>
+#include <irt_syscalls.h>
+#include <unistd.h>
+
+int __ioctl(int fd, mode_t mode) {
+  errno = ENOSYS;
+  return -1;
+}
+
diff --git a/libc/arch-nacl/syscalls/chmod.c b/libc/arch-nacl/syscalls/chmod.c
new file mode 100644
index 0000000..f52c2ed
--- /dev/null
+++ b/libc/arch-nacl/syscalls/chmod.c
@@ -0,0 +1,11 @@
+// Copyright 2014 Google Inc. All Rights Reserved.auto
+
+#include <errno.h>
+#include <irt_syscalls.h>
+#include <unistd.h>
+
+int chmod(const char* name, mode_t mode) {
+  errno = ENOSYS;
+  return -1;
+}
+
diff --git a/libc/arch-nacl/syscalls/chown.c b/libc/arch-nacl/syscalls/chown.c
new file mode 100644
index 0000000..01f564c
--- /dev/null
+++ b/libc/arch-nacl/syscalls/chown.c
@@ -0,0 +1,11 @@
+// Copyright 2014 Google Inc. All Rights Reserved.auto
+
+#include <errno.h>
+#include <irt_syscalls.h>
+#include <unistd.h>
+
+int chown(const char* name, uid_t uid, gid_t gid) {
+  errno = ENOSYS;
+  return -1;
+}
+
diff --git a/libc/arch-nacl/syscalls/enosys.c b/libc/arch-nacl/syscalls/enosys.c
index 80a973a..14621e9 100644
--- a/libc/arch-nacl/syscalls/enosys.c
+++ b/libc/arch-nacl/syscalls/enosys.c
@@ -41,12 +41,9 @@
 DEFINE_ENOSYS_SYSCALL(void *, __brk, void *addr)
 DEFINE_ENOSYS_SYSCALL(int, __fcntl64, int fd, int cmd, ...)
 DEFINE_ENOSYS_SYSCALL(pid_t, __fork, void)
-DEFINE_ENOSYS_SYSCALL(int, __ioctl, int d, int request, ...)
 DEFINE_ENOSYS_SYSCALL(long, __ptrace, int request, pid_t pid,
                       void *addr, void *data)
 DEFINE_ENOSYS_SYSCALL(int, __sigsuspend, const sigset_t *mask)
-DEFINE_ENOSYS_SYSCALL(int, chmod, const char *path, mode_t mode);
-DEFINE_ENOSYS_SYSCALL(int, chown, const char *path, uid_t owner, gid_t group);
 DEFINE_ENOSYS_SYSCALL(int, execve, const char *filename, char *const argv[],
                       char *const envp[])
 
@@ -95,6 +92,4 @@
 DEFINE_ENOSYS_SYSCALL(int, unlinkat,
                       int dirfd, const char *pathname, int flags)
 DEFINE_ENOSYS_SYSCALL(int, unshare, int flags)
-DEFINE_ENOSYS_SYSCALL(int, utimes, const char *filename,
-                      const struct timeval *times)
 DEFINE_ENOSYS_SYSCALL(pid_t, vfork, void)
diff --git a/libc/arch-nacl/syscalls/irt_poll.h b/libc/arch-nacl/syscalls/irt_poll.h
index d1daf99..c32bde6 100644
--- a/libc/arch-nacl/syscalls/irt_poll.h
+++ b/libc/arch-nacl/syscalls/irt_poll.h
@@ -43,7 +43,7 @@
  */
 #define NACL_IRT_DEV_POLL_v0_1 "nacl-irt-dev-poll-0.1"
 struct nacl_irt_dev_poll {
-  int (*poll)(struct NaClPollFD* fds, size_t nfds, int timeout);
+  int (*poll)(struct NaClPollFD* fds, size_t nfds, int timeout, int* cnt);
   int (*select)(size_t nfds, struct NaClFDSet* readfds,
                 struct NaClFDSet* writefds, struct NaClFDSet* exceptfds,
                 struct timeval* timeout);
diff --git a/libc/arch-nacl/syscalls/poll.c b/libc/arch-nacl/syscalls/poll.c
new file mode 100644
index 0000000..fd35a6c
--- /dev/null
+++ b/libc/arch-nacl/syscalls/poll.c
@@ -0,0 +1,17 @@
+// Copyright 2014 Google Inc. All Rights Reserved
+
+#include <errno.h>
+#include <irt_syscalls.h>
+#include <poll.h>
+
+int poll(struct pollfd *p, nfds_t cnt, long timeout) {
+  ENOSYS_IF_NULL(__nacl_irt_poll)
+  int count = 0;
+
+  int result = __nacl_irt_poll(p, cnt, timeout, &count);
+  if (result != 0) {
+    errno = __nacl_abi_errno_to_errno(result);
+    return -1;
+  }
+  return count;
+}
diff --git a/libc/arch-nacl/syscalls/utimes.c b/libc/arch-nacl/syscalls/utimes.c
new file mode 100644
index 0000000..70b203b
--- /dev/null
+++ b/libc/arch-nacl/syscalls/utimes.c
@@ -0,0 +1,10 @@
+// Copyright 2014 Google Inc. All Rights Reserved
+
+#include <errno.h>
+#include <sys/types.h>
+#include <utime.h>
+
+int utimes(const char *filename, const struct timeval *times) {
+  errno = ENOSYS;
+  return -1;
+}
\ No newline at end of file
diff --git a/libc/arch-nacl/tmp/libc_common_stubs.c b/libc/arch-nacl/tmp/libc_common_stubs.c
index ee50cea..ebe65a6 100644
--- a/libc/arch-nacl/tmp/libc_common_stubs.c
+++ b/libc/arch-nacl/tmp/libc_common_stubs.c
@@ -15,4 +15,3 @@
 
 DEFINE_STUB(__futex_wait)
 DEFINE_STUB(__futex_wake)
-DEFINE_STUB(poll)
diff --git a/libm/Makefile b/libm/Makefile
index 7ba660d..d73201b 100644
--- a/libm/Makefile
+++ b/libm/Makefile
@@ -30,7 +30,7 @@
 	s_asinh.c s_asinhf.c s_atan.c s_atanf.c s_cbrt.c s_cbrtf.c \
 	s_ceil.c s_ceilf.c s_ceill.c \
 	s_copysign.c s_copysignf.c s_cos.c s_cosf.c s_erf.c s_erff.c \
-	s_exp2.c s_exp2f.c s_expm1.c s_expm1f.c s_fabsf.c s_fdim.c \
+	s_exp2.c s_exp2f.c s_expm1.c s_expm1f.c s_fabs.c s_fabsf.c s_fdim.c \
 	s_finite.c s_finitef.c \
 	s_floor.c s_floorf.c s_floorl.c s_fma.c s_fmaf.c \
 	s_fmax.c s_fmaxf.c s_fmaxl.c s_fmin.c \