Use hidden visibility for generated stubs whose names begin with underscores.

Change-Id: Idb39fd04b7a14114801624e744e76e0e7913d951
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 2334e35..578605d 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -233,10 +233,17 @@
         return "__NR_%s" % (name)
 
 
-def add_aliases(stub, syscall):
+def add_footer(pointer_length, stub, syscall):
+    # Add any aliases for this syscall.
     aliases = syscall["aliases"]
     for alias in aliases:
         stub += function_alias % { "func" : syscall["func"], "alias" : alias }
+
+    # Use hidden visibility for any functions beginning with underscores.
+    # TODO: clean up single-underscore names too.
+    if pointer_length == 64 and syscall["func"].startswith("__"):
+        stub += '.hidden _C_LABEL(' + syscall["func"] + ')\n'
+
     return stub
 
 
@@ -334,22 +341,22 @@
             syscall["__NR_name"] = make__NR_name(syscall["name"])
 
             if syscall.has_key("arm"):
-                syscall["asm-arm"] = add_aliases(arm_eabi_genstub(syscall), syscall)
+                syscall["asm-arm"] = add_footer(32, arm_eabi_genstub(syscall), syscall)
 
             if syscall.has_key("x86"):
                 if syscall["socketcall_id"] >= 0:
-                    syscall["asm-x86"] = add_aliases(x86_genstub_socketcall(syscall), syscall)
+                    syscall["asm-x86"] = add_footer(32, x86_genstub_socketcall(syscall), syscall)
                 else:
-                    syscall["asm-x86"] = add_aliases(x86_genstub(syscall), syscall)
+                    syscall["asm-x86"] = add_footer(32, x86_genstub(syscall), syscall)
             elif syscall["socketcall_id"] >= 0:
                 E("socketcall_id for dispatch syscalls is only supported for x86 in '%s'" % t)
                 return
 
             if syscall.has_key("mips"):
-                syscall["asm-mips"] = add_aliases(mips_genstub(syscall), syscall)
+                syscall["asm-mips"] = add_footer(32, mips_genstub(syscall), syscall)
 
             if syscall.has_key("x86_64"):
-                syscall["asm-x86_64"] = add_aliases(x86_64_genstub(syscall), syscall)
+                syscall["asm-x86_64"] = add_footer(64, x86_64_genstub(syscall), syscall)
 
 
     # Scan a Linux kernel asm/unistd.h file containing __NR_* constants