use wrapper headers to hide most namespaced/internally-public symbols
authorRich Felker <dalias@aerifal.cx>
Tue, 11 Sep 2018 19:58:46 +0000 (15:58 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 12 Sep 2018 18:34:37 +0000 (14:34 -0400)
not all prefixed symbols can be made hidden. some are part of
ABI-compat (e.g. __nl_langinfo_l) and others are ABI as a consequence
of the way copy relocations for weak aliases work in ELF shared
libraries. most, however, can be made hidden.

with this commit, there should be no remaining unintentionally visible
symbols exported from libc.so.

12 files changed:
src/include/arpa/inet.h
src/include/crypt.h
src/include/pthread.h
src/include/resolv.h
src/include/signal.h
src/include/stdlib.h
src/include/string.h
src/include/sys/mman.h
src/include/sys/sysinfo.h
src/include/sys/time.h
src/include/time.h
src/include/unistd.h

index 2da6ddbc38454eb47a5bd3588b5b8b16e1fc6dab..1e6debf49669aa9cbf48802f76fa351728b2e43d 100644 (file)
@@ -3,6 +3,6 @@
 
 #include "../../../include/arpa/inet.h"
 
-int __inet_aton(const char *, struct in_addr *);
+hidden int __inet_aton(const char *, struct in_addr *);
 
 #endif
index 6e5c2d300631782285479dcf9793f8b6e81c7ed3..f6c630953371f78e74d6df278b17a1ea45c5f0e5 100644 (file)
@@ -3,12 +3,14 @@
 
 #include "../../include/crypt.h"
 
-char *__crypt_r(const char *, const char *, struct crypt_data *);
+#include <features.h>
 
-char *__crypt_des(const char *, const char *, char *);
-char *__crypt_md5(const char *, const char *, char *);
-char *__crypt_blowfish(const char *, const char *, char *);
-char *__crypt_sha256(const char *, const char *, char *);
-char *__crypt_sha512(const char *, const char *, char *);
+hidden char *__crypt_r(const char *, const char *, struct crypt_data *);
+
+hidden char *__crypt_des(const char *, const char *, char *);
+hidden char *__crypt_md5(const char *, const char *, char *);
+hidden char *__crypt_blowfish(const char *, const char *, char *);
+hidden char *__crypt_sha256(const char *, const char *, char *);
+hidden char *__crypt_sha512(const char *, const char *, char *);
 
 #endif
index 2beaa444e5b732fcd35bb3427f75f09503733b38..d93ac3a53743380675f146869e06c2cc27ed331a 100644 (file)
@@ -3,20 +3,20 @@
 
 #include "../../include/pthread.h"
 
-int __pthread_once(pthread_once_t *, void (*)(void));
-void __pthread_testcancel(void);
-int __pthread_setcancelstate(int, int *);
-int __pthread_create(pthread_t *restrict, const pthread_attr_t *restrict, void *(*)(void *), void *restrict);
-_Noreturn void __pthread_exit(void *);
-int __pthread_join(pthread_t, void **);
-int __pthread_mutex_lock(pthread_mutex_t *);
-int __pthread_mutex_trylock(pthread_mutex_t *);
-int __pthread_mutex_trylock_owner(pthread_mutex_t *);
-int __pthread_mutex_timedlock(pthread_mutex_t *restrict, const struct timespec *restrict);
-int __pthread_mutex_unlock(pthread_mutex_t *);
-int __private_cond_signal(pthread_cond_t *, int);
-int __pthread_cond_timedwait(pthread_cond_t *restrict, pthread_mutex_t *restrict, const struct timespec *restrict);
-int __pthread_key_create(pthread_key_t *, void (*)(void *));
-int __pthread_key_delete(pthread_key_t);
+hidden int __pthread_once(pthread_once_t *, void (*)(void));
+hidden void __pthread_testcancel(void);
+hidden int __pthread_setcancelstate(int, int *);
+hidden int __pthread_create(pthread_t *restrict, const pthread_attr_t *restrict, void *(*)(void *), void *restrict);
+hidden _Noreturn void __pthread_exit(void *);
+hidden int __pthread_join(pthread_t, void **);
+hidden int __pthread_mutex_lock(pthread_mutex_t *);
+hidden int __pthread_mutex_trylock(pthread_mutex_t *);
+hidden int __pthread_mutex_trylock_owner(pthread_mutex_t *);
+hidden int __pthread_mutex_timedlock(pthread_mutex_t *restrict, const struct timespec *restrict);
+hidden int __pthread_mutex_unlock(pthread_mutex_t *);
+hidden int __private_cond_signal(pthread_cond_t *, int);
+hidden int __pthread_cond_timedwait(pthread_cond_t *restrict, pthread_mutex_t *restrict, const struct timespec *restrict);
+hidden int __pthread_key_create(pthread_key_t *, void (*)(void *));
+hidden int __pthread_key_delete(pthread_key_t);
 
 #endif
index a66669b28829d36da357cc3b09aa1389031e9929..945e89e6354e1ec6eb94f76b17b37fdba391864f 100644 (file)
@@ -3,10 +3,10 @@
 
 #include "../../include/resolv.h"
 
-int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
+hidden int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
 
-int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
-int __res_send(const unsigned char *, int, unsigned char *, int);
-int __res_msend(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int);
+hidden int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
+hidden int __res_send(const unsigned char *, int, unsigned char *, int);
+hidden int __res_msend(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int);
 
 #endif
index 116c0ddd87bca14b2db7811c731b7bbdad823c25..bb5667841a66009715b7c3687ca73cf28b49616b 100644 (file)
@@ -3,12 +3,12 @@
 
 #include "../../include/signal.h"
 
-int __sigaction(int, const struct sigaction *, struct sigaction *);
+hidden int __sigaction(int, const struct sigaction *, struct sigaction *);
 
-void __block_all_sigs(void *);
-void __block_app_sigs(void *);
-void __restore_sigs(void *);
+hidden void __block_all_sigs(void *);
+hidden void __block_app_sigs(void *);
+hidden void __restore_sigs(void *);
 
-void __get_handler_set(sigset_t *);
+hidden void __get_handler_set(sigset_t *);
 
 #endif
index 8b8fe9c86f762cf8f6c2ff5a6802a7ab4a39e3f8..d38a5417f1ea97a720e13fd8fbda223fe53c193a 100644 (file)
@@ -3,10 +3,10 @@
 
 #include "../../include/stdlib.h"
 
-int __putenv(char *, size_t, char *);
-void __env_rm_add(char *, char *);
-int __mkostemps(char *, int, int);
-int __ptsname_r(int, char *, size_t);
-char *__randname(char *);
+hidden int __putenv(char *, size_t, char *);
+hidden void __env_rm_add(char *, char *);
+hidden int __mkostemps(char *, int, int);
+hidden int __ptsname_r(int, char *, size_t);
+hidden char *__randname(char *);
 
 #endif
index 1d10be7006c9c80532ca159c91e1cd63cc52aefb..2133b5c1eead4f94b5cb7f9a70c21788678cd3be 100644 (file)
@@ -3,9 +3,9 @@
 
 #include "../../include/string.h"
 
-void *__memrchr(const void *, int, size_t);
-char *__stpcpy(char *, const char *);
-char *__stpncpy(char *, const char *, size_t);
-char *__strchrnul(const char *, int);
+hidden void *__memrchr(const void *, int, size_t);
+hidden char *__stpcpy(char *, const char *);
+hidden char *__stpncpy(char *, const char *, size_t);
+hidden char *__strchrnul(const char *, int);
 
 #endif
index 28394dd5499861d9a6988c5718fc751daf947dbf..57c5bd3d9621daf1c9d40fde24c0d05f464489b6 100644 (file)
@@ -3,18 +3,18 @@
 
 #include "../../../include/sys/mman.h"
 
-void __vm_wait(void);
-void __vm_lock(void);
-void __vm_unlock(void);
+hidden void __vm_wait(void);
+hidden void __vm_lock(void);
+hidden void __vm_unlock(void);
 
-void *__mmap(void *, size_t, int, int, int, off_t);
-int __munmap(void *, size_t);
-void *__mremap(void *, size_t, size_t, int, ...);
-int __madvise(void *, size_t, int);
-int __mprotect(void *, size_t, int);
+hidden void *__mmap(void *, size_t, int, int, int, off_t);
+hidden int __munmap(void *, size_t);
+hidden void *__mremap(void *, size_t, size_t, int, ...);
+hidden int __madvise(void *, size_t, int);
+hidden int __mprotect(void *, size_t, int);
 
-const unsigned char *__map_file(const char *, size_t *);
+hidden const unsigned char *__map_file(const char *, size_t *);
 
-char *__shm_mapname(const char *, char *);
+hidden char *__shm_mapname(const char *, char *);
 
 #endif
index c3d60bfd943d5b288e29fe6b164cbb325fb53b53..10be8a48f79dadcff3c37767e3321245fc9efd43 100644 (file)
@@ -2,7 +2,8 @@
 #define SYS_SYSINFO_H
 
 #include "../../../include/sys/sysinfo.h"
+#include <features.h>
 
-int __lsysinfo(struct sysinfo *);
+hidden int __lsysinfo(struct sysinfo *);
 
 #endif
index 79c5fcbc2f1e0828aa0d75b87793bd80230ac817..fb9622e51fcf9608bcf604794a4a18e0790a2f7a 100644 (file)
@@ -3,6 +3,6 @@
 
 #include "../../../include/sys/time.h"
 
-int __futimesat(int, const char *, const struct timeval [2]);
+hidden int __futimesat(int, const char *, const struct timeval [2]);
 
 #endif
index 991f0b4d68ce91c6a4f07257c4218cc0b74540b3..24c87973a38a3c990f70903ffaa03d50ef22ff7c 100644 (file)
@@ -3,12 +3,12 @@
 
 #include "../../include/time.h"
 
-int __clock_gettime(clockid_t, struct timespec *);
+hidden int __clock_gettime(clockid_t, struct timespec *);
 
-char *__asctime_r(const struct tm *, char *);
-struct tm *__gmtime_r(const time_t *restrict, struct tm *restrict);
-struct tm *__localtime_r(const time_t *restrict, struct tm *restrict);
+hidden char *__asctime_r(const struct tm *, char *);
+hidden struct tm *__gmtime_r(const time_t *restrict, struct tm *restrict);
+hidden struct tm *__localtime_r(const time_t *restrict, struct tm *restrict);
 
-size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t);
+hidden size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t);
 
 #endif
index 9cdf1d3e33d397d5b1a1c2be6e93c565423eb1dc..6deb1bcc16caae974ee5229abbd6ea3b940c55a7 100644 (file)
@@ -5,8 +5,9 @@
 
 extern char **__environ;
 
-int __dup3(int, int, int);
-int __mkostemps(char *, int, int);
-int __execvpe(const char *, char *const *, char *const *);
+hidden int __dup3(int, int, int);
+hidden int __mkostemps(char *, int, int);
+hidden int __execvpe(const char *, char *const *, char *const *);
+hidden int __aio_close(int);
 
 #endif