>From 6e8e7105d210f195caf93422f6b9d880e7cc0cc0 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sat, 28 Mar 2020 11:11:32 +0000 Subject: [PATCH] fix glibc ABI compat commit 0676c3a34c7bf12b33f8f5efb92476f4ffc7f20e made various internal symbols hidden, but some of those symbols are useful for glibc ABI compatibility (e.g. __nl_langinfo_l is internal but was not made hidden). following symbols are hidden in musl, but exported in glibc: __clock_gettime __clone __dn_expand __getauxval __gmtime_r __lseek __madvise __mmap __mprotect __munmap __pthread_key_create __pthread_mutex_lock __pthread_mutex_trylock __pthread_mutex_unlock __pthread_once __pthread_rwlock_rdlock __pthread_rwlock_tryrdlock __pthread_rwlock_trywrlock __pthread_rwlock_unlock __pthread_rwlock_wrlock __res_mkquery __res_send __sigaction __stpcpy __stpncpy __strftime_l __wait at least the following symbols appear in glibc installed headers currently so binaries can plausably end up using them: __dn_expand __res_mkquery __res_send __stpcpy __stpncpy and it is known that glibc linked libstdc++ uses __strftime_l it seems there never was a redirection to __stpcpy or __stpncpy in glibc headers and there is no known direct usage of them so they are kept hidden in musl. --- src/include/resolv.h | 6 +++--- src/include/time.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/include/resolv.h b/src/include/resolv.h index 945e89e6..6387adca 100644 --- a/src/include/resolv.h +++ b/src/include/resolv.h @@ -3,10 +3,10 @@ #include "../../include/resolv.h" -hidden int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int); +int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, 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); +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); hidden int __res_msend(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int); #endif diff --git a/src/include/time.h b/src/include/time.h index cbabde47..4f94bc39 100644 --- a/src/include/time.h +++ b/src/include/time.h @@ -10,6 +10,6 @@ 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); -hidden size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t); +size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t); #endif -- 2.24.1