From cce36c187896fb0d4bd36519c4b2e90c502137dc Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 22 Apr 2014 12:32:49 -0700 Subject: [PATCH] Use -fvisibility=hidden to build libc_gdtoa. Bug: 12177745 Change-Id: Ia4ac71e1a3a237e764c809cc591622f8952ed642 --- libc/Android.mk | 1 + libc/include/stdlib.h | 7 ++++--- libc/include/sys/cdefs_elf.h | 21 ++++----------------- 3 files changed, 9 insertions(+), 20 deletions(-) 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)