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