diff --git a/libc/Android.mk b/libc/Android.mk index 507126ed8..be40da676 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -653,6 +653,7 @@ LOCAL_SRC_FILES_32 := $(libc_upstream_openbsd_gdtoa_src_files_32) LOCAL_SRC_FILES_64 := $(libc_upstream_openbsd_gdtoa_src_files_64) LOCAL_CFLAGS := \ $(libc_common_cflags) \ + -fvisibility=hidden \ -I$(LOCAL_PATH)/upstream-openbsd/android/include \ -I$(LOCAL_PATH)/upstream-openbsd/lib/libc/include \ -include openbsd-compat.h \ diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h index 2c797c593..58538ffc7 100644 --- a/libc/include/stdlib.h +++ b/libc/include/stdlib.h @@ -65,9 +65,10 @@ extern unsigned long long strtoull(const char *, char **, int); extern int posix_memalign(void **memptr, size_t alignment, size_t size); extern double atof(const char*); -extern double strtod(const char*, char**); -extern float strtof(const char*, char**); -extern long double strtold(const char*, char**); + +extern double strtod(const char*, char**) __LIBC_ABI_PUBLIC__; +extern float strtof(const char*, char**) __LIBC_ABI_PUBLIC__; +extern long double strtold(const char*, char**) __LIBC_ABI_PUBLIC__; extern int atoi(const char*) __purefunc; extern long atol(const char*) __purefunc; diff --git a/libc/include/sys/cdefs_elf.h b/libc/include/sys/cdefs_elf.h index bb846b7fd..c21214cc2 100644 --- a/libc/include/sys/cdefs_elf.h +++ b/libc/include/sys/cdefs_elf.h @@ -61,24 +61,11 @@ #define __SECTIONSTRING(_sec, _str) \ __asm__(".section " #_sec "\n\t.asciz \"" _str "\"\n\t.previous") -/* GCC visibility helper macro */ -/* This must be used to tag non-static functions that are private, i.e. - * never exposed by the shared library. */ -#define __LIBC_HIDDEN__ \ - __attribute__ ((visibility ("hidden"))) +/* Used to tag non-static symbols that are private and never exposed by the shared library. */ +#define __LIBC_HIDDEN__ __attribute__((visibility ("hidden"))) -/* This must be used to tag non-static functions that are public, i.e. - * exposed by the shared library, and part of the stable NDK ABI */ -#define __LIBC_ABI_PUBLIC__ \ - __attribute__ ((visibility ("default"))) - -/* This must be used to tag non-static functions that must be exported - * by the shared library, but whose implementation is private to the - * platform. For now this is equivalent to __LIBC_ABI_PUBLIC__, but we - * may want to change this later. - */ -#define __LIBC_ABI_PRIVATE__ \ - __attribute__ ((visibility ("default"))) +/* Used to tag non-static symbols that are public and exposed by the shared library. */ +#define __LIBC_ABI_PUBLIC__ __attribute__((visibility ("default"))) #define __IDSTRING(_n,_s) __SECTIONSTRING(.ident,_s)