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)
