diff options
| author | Jean-Baptiste Queru <jbq@google.com> | 2012-02-13 14:39:52 -0800 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2012-02-13 14:39:52 -0800 |
| commit | 09049311a229c427f73e3e0ac873bf344b45aaf2 (patch) | |
| tree | d0f674e29737bd49d3ac8cd029962a5d64b58021 | |
| parent | 5d7181a71c0b066fe6c19b9c5906bd694a399a59 (diff) | |
| parent | cfff36df2bebd95f2663b7b053c6308593c343dd (diff) | |
| download | bionic-09049311a229c427f73e3e0ac873bf344b45aaf2.zip bionic-09049311a229c427f73e3e0ac873bf344b45aaf2.tar.gz bionic-09049311a229c427f73e3e0ac873bf344b45aaf2.tar.bz2 | |
am cfff36df: am a60ff6c5: Merge "libc: Define new symbol visibility macros"
* commit 'cfff36df2bebd95f2663b7b053c6308593c343dd':
libc: Define new symbol visibility macros
| -rw-r--r-- | libc/arch-arm/include/machine/asm.h | 6 | ||||
| -rw-r--r-- | libc/arch-x86/include/machine/asm.h | 10 | ||||
| -rw-r--r-- | libc/include/sys/cdefs_elf.h | 15 |
3 files changed, 31 insertions, 0 deletions
diff --git a/libc/arch-arm/include/machine/asm.h b/libc/arch-arm/include/machine/asm.h index 7b8f053..047e54d 100644 --- a/libc/arch-arm/include/machine/asm.h +++ b/libc/arch-arm/include/machine/asm.h @@ -97,6 +97,12 @@ #define ASENTRY_NP(y) _ENTRY(_ASM_LABEL(y)) #define ASEND(y) _END(_ASM_LABEL(y)) +#ifdef __ELF__ +#define ENTRY_PRIVATE(y) ENTRY(y); .hidden _C_LABEL(y) +#else +#define ENTRY_PRIVATE(y) ENTRY(y) +#endif + #define ASMSTR .asciz #if defined(__ELF__) && defined(PIC) diff --git a/libc/arch-x86/include/machine/asm.h b/libc/arch-x86/include/machine/asm.h index 7a23060..49d3ea8 100644 --- a/libc/arch-x86/include/machine/asm.h +++ b/libc/arch-x86/include/machine/asm.h @@ -103,6 +103,12 @@ #define _ENTRY(x) \ .text; _ALIGN_TEXT; .globl x; .type x,@function; x: +#define _ASM_SIZE(x) .size x, .-x; + +#define _END(x) \ + .fnend; \ + _ASM_SIZE(x) + #ifdef GPROF # define _PROF_PROLOGUE \ pushl %ebp; movl %esp,%ebp; call PIC_PLT(mcount); popl %ebp @@ -112,8 +118,12 @@ #define ENTRY(y) _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE #define NENTRY(y) _ENTRY(_C_LABEL(y)) +#define END(y) _END(_C_LABEL(y)) #define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE +#define ENTRY_PRIVATE(y) ENTRY(y); .hidden _C_LABEL(y) + + #define ALTENTRY(name) .globl _C_LABEL(name); _C_LABEL(name): #define ASMSTR .asciz diff --git a/libc/include/sys/cdefs_elf.h b/libc/include/sys/cdefs_elf.h index 1e57470..0887fa5 100644 --- a/libc/include/sys/cdefs_elf.h +++ b/libc/include/sys/cdefs_elf.h @@ -96,9 +96,24 @@ #endif /* 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"))) +/* 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"))) + #define __IDSTRING(_n,_s) __SECTIONSTRING(.ident,_s) #define __RCSID(_s) __IDSTRING(rcsid,_s) |
