Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
diff --git a/libc/include/sys/glibc-syscalls.h b/libc/include/sys/glibc-syscalls.h
new file mode 100644
index 0000000..125d241
--- /dev/null
+++ b/libc/include/sys/glibc-syscalls.h
@@ -0,0 +1,235 @@
+/* Auto-generated by gensyscalls.py; do not edit. */
+#ifndef _BIONIC_GLIBC_SYSCALLS_H_
+#define _BIONIC_GLIBC_SYSCALLS_H_
+#define SYS_ARM_cacheflush            __NR_ARM_cacheflush
+#define SYS_ARM_set_tls               __NR_ARM_set_tls
+#define SYS__llseek                   __NR__llseek
+#define SYS__newselect                __NR__newselect
+#define SYS_accept                    __NR_accept
+#define SYS_access                    __NR_access
+#define SYS_acct                      __NR_acct
+#define SYS_bind                      __NR_bind
+#define SYS_brk                       __NR_brk
+#define SYS_cacheflush                __NR_cacheflush
+#define SYS_capget                    __NR_capget
+#define SYS_capset                    __NR_capset
+#define SYS_chdir                     __NR_chdir
+#define SYS_chmod                     __NR_chmod
+#define SYS_chown                     __NR_chown
+#define SYS_chown32                   __NR_chown32
+#define SYS_chroot                    __NR_chroot
+#define SYS_clock_getres              __NR_clock_getres
+#define SYS_clock_gettime             __NR_clock_gettime
+#define SYS_clock_nanosleep           __NR_clock_nanosleep
+#define SYS_clock_settime             __NR_clock_settime
+#define SYS_clone                     __NR_clone
+#define SYS_close                     __NR_close
+#define SYS_connect                   __NR_connect
+#define SYS_creat                     __NR_creat
+#define SYS_delete_module             __NR_delete_module
+#define SYS_dup                       __NR_dup
+#define SYS_dup2                      __NR_dup2
+#define SYS_epoll_create              __NR_epoll_create
+#define SYS_epoll_ctl                 __NR_epoll_ctl
+#define SYS_epoll_wait                __NR_epoll_wait
+#define SYS_eventfd2                  __NR_eventfd2
+#define SYS_execve                    __NR_execve
+#define SYS_exit                      __NR_exit
+#define SYS_exit_group                __NR_exit_group
+#define SYS_faccessat                 __NR_faccessat
+#define SYS_fchdir                    __NR_fchdir
+#define SYS_fchmod                    __NR_fchmod
+#define SYS_fchmodat                  __NR_fchmodat
+#define SYS_fchown                    __NR_fchown
+#define SYS_fchown32                  __NR_fchown32
+#define SYS_fchownat                  __NR_fchownat
+#define SYS_fcntl                     __NR_fcntl
+#define SYS_fcntl64                   __NR_fcntl64
+#define SYS_fdatasync                 __NR_fdatasync
+#define SYS_fgetxattr                 __NR_fgetxattr
+#define SYS_flistxattr                __NR_flistxattr
+#define SYS_flock                     __NR_flock
+#define SYS_fork                      __NR_fork
+#define SYS_fremovexattr              __NR_fremovexattr
+#define SYS_fsetxattr                 __NR_fsetxattr
+#define SYS_fstat64                   __NR_fstat64
+#define SYS_fstatat64                 __NR_fstatat64
+#define SYS_fstatfs64                 __NR_fstatfs64
+#define SYS_fsync                     __NR_fsync
+#define SYS_ftruncate                 __NR_ftruncate
+#define SYS_ftruncate64               __NR_ftruncate64
+#define SYS_futex                     __NR_futex
+#define SYS_getcpu                    __NR_getcpu
+#define SYS_getcwd                    __NR_getcwd
+#define SYS_getdents64                __NR_getdents64
+#define SYS_getegid                   __NR_getegid
+#define SYS_getegid32                 __NR_getegid32
+#define SYS_geteuid                   __NR_geteuid
+#define SYS_geteuid32                 __NR_geteuid32
+#define SYS_getgid                    __NR_getgid
+#define SYS_getgid32                  __NR_getgid32
+#define SYS_getgroups                 __NR_getgroups
+#define SYS_getgroups32               __NR_getgroups32
+#define SYS_getitimer                 __NR_getitimer
+#define SYS_getpeername               __NR_getpeername
+#define SYS_getpgid                   __NR_getpgid
+#define SYS_getpgrp                   __NR_getpgrp
+#define SYS_getpid                    __NR_getpid
+#define SYS_getppid                   __NR_getppid
+#define SYS_getpriority               __NR_getpriority
+#define SYS_getresgid                 __NR_getresgid
+#define SYS_getresgid32               __NR_getresgid32
+#define SYS_getresuid                 __NR_getresuid
+#define SYS_getresuid32               __NR_getresuid32
+#define SYS_getrlimit                 __NR_getrlimit
+#define SYS_getrusage                 __NR_getrusage
+#define SYS_getsid                    __NR_getsid
+#define SYS_getsockname               __NR_getsockname
+#define SYS_getsockopt                __NR_getsockopt
+#define SYS_gettid                    __NR_gettid
+#define SYS_gettimeofday              __NR_gettimeofday
+#define SYS_getuid                    __NR_getuid
+#define SYS_getuid32                  __NR_getuid32
+#define SYS_getxattr                  __NR_getxattr
+#define SYS_init_module               __NR_init_module
+#define SYS_inotify_add_watch         __NR_inotify_add_watch
+#define SYS_inotify_init              __NR_inotify_init
+#define SYS_inotify_rm_watch          __NR_inotify_rm_watch
+#define SYS_ioctl                     __NR_ioctl
+#define SYS_ioprio_get                __NR_ioprio_get
+#define SYS_ioprio_set                __NR_ioprio_set
+#define SYS_kill                      __NR_kill
+#define SYS_lchown                    __NR_lchown
+#define SYS_lchown32                  __NR_lchown32
+#define SYS_lgetxattr                 __NR_lgetxattr
+#define SYS_link                      __NR_link
+#define SYS_listen                    __NR_listen
+#define SYS_listxattr                 __NR_listxattr
+#define SYS_llistxattr                __NR_llistxattr
+#define SYS_lremovexattr              __NR_lremovexattr
+#define SYS_lseek                     __NR_lseek
+#define SYS_lsetxattr                 __NR_lsetxattr
+#define SYS_lstat64                   __NR_lstat64
+#define SYS_madvise                   __NR_madvise
+#define SYS_mincore                   __NR_mincore
+#define SYS_mkdir                     __NR_mkdir
+#define SYS_mkdirat                   __NR_mkdirat
+#define SYS_mknod                     __NR_mknod
+#define SYS_mlock                     __NR_mlock
+#define SYS_mlockall                  __NR_mlockall
+#define SYS_mmap                      __NR_mmap
+#define SYS_mmap2                     __NR_mmap2
+#define SYS_mount                     __NR_mount
+#define SYS_mprotect                  __NR_mprotect
+#define SYS_mremap                    __NR_mremap
+#define SYS_msync                     __NR_msync
+#define SYS_munlock                   __NR_munlock
+#define SYS_munlockall                __NR_munlockall
+#define SYS_munmap                    __NR_munmap
+#define SYS_nanosleep                 __NR_nanosleep
+#define SYS_open                      __NR_open
+#define SYS_openat                    __NR_openat
+#define SYS_pause                     __NR_pause
+#define SYS_perf_event_open           __NR_perf_event_open
+#define SYS_personality               __NR_personality
+#define SYS_pipe                      __NR_pipe
+#define SYS_pipe2                     __NR_pipe2
+#define SYS_poll                      __NR_poll
+#define SYS_prctl                     __NR_prctl
+#define SYS_pread64                   __NR_pread64
+#define SYS_ptrace                    __NR_ptrace
+#define SYS_pwrite64                  __NR_pwrite64
+#define SYS_read                      __NR_read
+#define SYS_readahead                 __NR_readahead
+#define SYS_readlink                  __NR_readlink
+#define SYS_readv                     __NR_readv
+#define SYS_reboot                    __NR_reboot
+#define SYS_recvfrom                  __NR_recvfrom
+#define SYS_recvmsg                   __NR_recvmsg
+#define SYS_removexattr               __NR_removexattr
+#define SYS_rename                    __NR_rename
+#define SYS_renameat                  __NR_renameat
+#define SYS_rmdir                     __NR_rmdir
+#define SYS_rt_sigaction              __NR_rt_sigaction
+#define SYS_rt_sigprocmask            __NR_rt_sigprocmask
+#define SYS_rt_sigtimedwait           __NR_rt_sigtimedwait
+#define SYS_sched_get_priority_max    __NR_sched_get_priority_max
+#define SYS_sched_get_priority_min    __NR_sched_get_priority_min
+#define SYS_sched_getaffinity         __NR_sched_getaffinity
+#define SYS_sched_getparam            __NR_sched_getparam
+#define SYS_sched_getscheduler        __NR_sched_getscheduler
+#define SYS_sched_rr_get_interval     __NR_sched_rr_get_interval
+#define SYS_sched_setaffinity         __NR_sched_setaffinity
+#define SYS_sched_setparam            __NR_sched_setparam
+#define SYS_sched_setscheduler        __NR_sched_setscheduler
+#define SYS_sched_yield               __NR_sched_yield
+#define SYS_sendfile                  __NR_sendfile
+#define SYS_sendmsg                   __NR_sendmsg
+#define SYS_sendto                    __NR_sendto
+#define SYS_set_thread_area           __NR_set_thread_area
+#define SYS_seteuid32                 __NR_seteuid32
+#define SYS_setgid                    __NR_setgid
+#define SYS_setgid32                  __NR_setgid32
+#define SYS_setgroups                 __NR_setgroups
+#define SYS_setgroups32               __NR_setgroups32
+#define SYS_setitimer                 __NR_setitimer
+#define SYS_setpgid                   __NR_setpgid
+#define SYS_setpriority               __NR_setpriority
+#define SYS_setregid                  __NR_setregid
+#define SYS_setregid32                __NR_setregid32
+#define SYS_setresgid                 __NR_setresgid
+#define SYS_setresgid32               __NR_setresgid32
+#define SYS_setresuid                 __NR_setresuid
+#define SYS_setresuid32               __NR_setresuid32
+#define SYS_setreuid                  __NR_setreuid
+#define SYS_setreuid32                __NR_setreuid32
+#define SYS_setrlimit                 __NR_setrlimit
+#define SYS_setsid                    __NR_setsid
+#define SYS_setsockopt                __NR_setsockopt
+#define SYS_settimeofday              __NR_settimeofday
+#define SYS_setuid                    __NR_setuid
+#define SYS_setuid32                  __NR_setuid32
+#define SYS_setxattr                  __NR_setxattr
+#define SYS_shutdown                  __NR_shutdown
+#define SYS_sigaction                 __NR_sigaction
+#define SYS_sigaltstack               __NR_sigaltstack
+#define SYS_signalfd4                 __NR_signalfd4
+#define SYS_sigpending                __NR_sigpending
+#define SYS_sigprocmask               __NR_sigprocmask
+#define SYS_sigsuspend                __NR_sigsuspend
+#define SYS_socket                    __NR_socket
+#define SYS_socketcall                __NR_socketcall
+#define SYS_socketpair                __NR_socketpair
+#define SYS_stat64                    __NR_stat64
+#define SYS_statfs64                  __NR_statfs64
+#define SYS_symlink                   __NR_symlink
+#define SYS_sync                      __NR_sync
+#define SYS_syscall                   __NR_syscall
+#define SYS_sysinfo                   __NR_sysinfo
+#define SYS_syslog                    __NR_syslog
+#define SYS_tgkill                    __NR_tgkill
+#define SYS_timer_create              __NR_timer_create
+#define SYS_timer_delete              __NR_timer_delete
+#define SYS_timer_getoverrun          __NR_timer_getoverrun
+#define SYS_timer_gettime             __NR_timer_gettime
+#define SYS_timer_settime             __NR_timer_settime
+#define SYS_times                     __NR_times
+#define SYS_tkill                     __NR_tkill
+#define SYS_truncate                  __NR_truncate
+#define SYS_ugetrlimit                __NR_ugetrlimit
+#define SYS_umask                     __NR_umask
+#define SYS_umount                    __NR_umount
+#define SYS_umount2                   __NR_umount2
+#define SYS_uname                     __NR_uname
+#define SYS_unlink                    __NR_unlink
+#define SYS_unlinkat                  __NR_unlinkat
+#define SYS_unshare                   __NR_unshare
+#define SYS_utimensat                 __NR_utimensat
+#define SYS_utimes                    __NR_utimes
+#define SYS_vfork                     __NR_vfork
+#define SYS_wait4                     __NR_wait4
+#define SYS_waitid                    __NR_waitid
+#define SYS_waitpid                   __NR_waitpid
+#define SYS_write                     __NR_write
+#define SYS_writev                    __NR_writev
+#endif
diff --git a/libc/include/sys/linux-syscalls.h b/libc/include/sys/linux-syscalls.h
index 738d9e8..2e6421f 100644
--- a/libc/include/sys/linux-syscalls.h
+++ b/libc/include/sys/linux-syscalls.h
@@ -1,4 +1,4 @@
-/* auto-generated by gensyscalls.py, do not touch */
+/* Auto-generated by gensyscalls.py; do not edit. */
 #ifndef _BIONIC_LINUX_SYSCALLS_H_
 #define _BIONIC_LINUX_SYSCALLS_H_
 
diff --git a/libc/include/sys/syscall.h b/libc/include/sys/syscall.h
index 7055518..a44b2e5 100644
--- a/libc/include/sys/syscall.h
+++ b/libc/include/sys/syscall.h
@@ -33,6 +33,8 @@
 #include <sys/types.h>
 #include <asm/unistd.h>
 
+#include <sys/glibc-syscalls.h> /* glibc-compatible SYS_* aliases for our __NR_* names. */
+
 __BEGIN_DECLS
 
 int syscall(int number, ...);
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 91e7a57..389177e 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -303,15 +303,31 @@
                 t["asm-mips"] = self.mips_genstub(syscall_func,"__NR_"+syscall_name)
 
 
-    def gen_NR_syscall(self,fp,name,id):
-        fp.write( "#define __NR_%-25s    (__NR_SYSCALL_BASE + %d)\n" % (name,id) )
+    def gen_NR_syscall(self, fp, name, id):
+        fp.write("#define __NR_%-25s    (__NR_SYSCALL_BASE + %d)\n" % (name,id))
 
-    # now dump the content of linux-syscalls.h
+
+    def gen_glibc_syscalls_h(self):
+        glibc_syscalls_h_path = "include/sys/glibc-syscalls.h"
+        all_syscall_names = set()
+        for sc in self.syscalls:
+            all_syscall_names.add(sc["name"])
+        fp = create_file(glibc_syscalls_h_path)
+        fp.write("/* Auto-generated by gensyscalls.py; do not edit. */\n")
+        fp.write("#ifndef _BIONIC_GLIBC_SYSCALLS_H_\n")
+        fp.write("#define _BIONIC_GLIBC_SYSCALLS_H_\n")
+        for syscall_name in sorted(all_syscall_names):
+            fp.write("#define SYS_%-25s __NR_%s\n" % (syscall_name, syscall_name))
+        fp.write("#endif\n")
+        fp.close()
+        self.other_files.append(glibc_syscalls_h_path)
+
+
     def gen_linux_syscalls_h(self):
-        path = "include/sys/linux-syscalls.h"
-        D( "generating "+path )
-        fp = create_file( path )
-        fp.write( "/* auto-generated by gensyscalls.py, do not touch */\n" )
+        linux_syscalls_h_path = "include/sys/linux-syscalls.h"
+        D("generating " + linux_syscalls_h_path)
+        fp = create_file(linux_syscalls_h_path)
+        fp.write( "/* Auto-generated by gensyscalls.py; do not edit. */\n" )
         fp.write( "#ifndef _BIONIC_LINUX_SYSCALLS_H_\n" )
         fp.write( "#define _BIONIC_LINUX_SYSCALLS_H_\n\n" )
         fp.write( "#if !defined __ASM_ARM_UNISTD_H && !defined __ASM_I386_UNISTD_H && !defined __ASM_MIPS_UNISTD_H\n" )
@@ -328,7 +344,7 @@
             sc_id  = sc["common"]
             sc_name = sc["name"]
             if sc_id >= 0:
-                self.gen_NR_syscall( fp, sc_name, sc_id )
+                self.gen_NR_syscall(fp, sc_name, sc_id)
 
         # now, all arm-specific syscalls
         fp.write( "\n#ifdef __arm__\n" );
@@ -336,7 +352,7 @@
             sc_id  = sc["armid"]
             sc_name = sc["name"]
             if sc_id >= 0:
-                self.gen_NR_syscall( fp, sc_name, sc_id )
+                self.gen_NR_syscall(fp, sc_name, sc_id)
         fp.write( "#endif\n" );
 
         gen_syscalls = {}
@@ -346,7 +362,7 @@
             sc_id  = sc["x86id"]
             sc_name = sc["name"]
             if sc_id >= 0 and sc_name not in gen_syscalls:
-                self.gen_NR_syscall( fp, sc_name, sc_id )
+                self.gen_NR_syscall(fp, sc_name, sc_id)
                 gen_syscalls[sc_name] = True
         fp.write( "#endif\n" );
 
@@ -355,13 +371,13 @@
         for sc in sorted(self.syscalls,key=lambda x:x["mipsid"]):
             sc_id = sc["mipsid"]
             if sc_id >= 0:
-                self.gen_NR_syscall( fp, sc["name"], sc_id )
+                self.gen_NR_syscall(fp, sc["name"], sc_id)
         fp.write( "#endif\n" );
 
         fp.write( "\n#endif\n" )
         fp.write( "\n#endif /* _BIONIC_LINUX_SYSCALLS_H_ */\n" );
         fp.close()
-        self.other_files.append( path )
+        self.other_files.append(linux_syscalls_h_path)
 
 
     # now dump the contents of syscalls.mk
@@ -432,6 +448,7 @@
 
         D( "re-generating stubs and support files" )
 
+        self.gen_glibc_syscalls_h()
         self.gen_linux_syscalls_h()
         for arch in all_archs:
             self.gen_arch_syscalls_mk(arch)