Merge "Move common macros into bionic_macros.h."
diff --git a/libc/include/ctype.h b/libc/include/ctype.h
index a66df12..6e97326 100644
--- a/libc/include/ctype.h
+++ b/libc/include/ctype.h
@@ -56,8 +56,6 @@
__BEGIN_DECLS
extern const char *_ctype_;
-extern const short *_tolower_tab_;
-extern const short *_toupper_tab_;
#if defined(__GNUC__) || defined(_ANSI_LIBRARY) || defined(lint)
int isalnum(int);
diff --git a/libc/include/sys/cdefs_elf.h b/libc/include/sys/cdefs_elf.h
index c21214c..b5db13e 100644
--- a/libc/include/sys/cdefs_elf.h
+++ b/libc/include/sys/cdefs_elf.h
@@ -64,6 +64,13 @@
/* Used to tag non-static symbols that are private and never exposed by the shared library. */
#define __LIBC_HIDDEN__ __attribute__((visibility ("hidden")))
+/* Like __LIBC_HIDDEN__, but preserves binary compatibility for LP32. */
+#ifdef __LP64__
+#define __LIBC64_HIDDEN__ __LIBC_HIDDEN__
+#else
+#define __LIBC64_HIDDEN__
+#endif
+
/* Used to tag non-static symbols that are public and exposed by the shared library. */
#define __LIBC_ABI_PUBLIC__ __attribute__((visibility ("default")))
diff --git a/libc/stdlib/atexit.c b/libc/stdlib/atexit.c
index c607206..05f2faa 100644
--- a/libc/stdlib/atexit.c
+++ b/libc/stdlib/atexit.c
@@ -37,7 +37,6 @@
#include "atexit.h"
#include "private/thread_private.h"
-int __atexit_invalid = 1;
struct atexit *__atexit;
/*
@@ -131,8 +130,6 @@
sizeof(p->fns[0]);
p->next = __atexit;
__atexit = p;
- if (__atexit_invalid)
- __atexit_invalid = 0;
}
fnp = &p->fns[p->ind++];
fnp->cxa_func = func;
@@ -159,8 +156,6 @@
int n, pgsize = getpagesize(), original_ind;
static int call_depth;
- if (__atexit_invalid)
- return;
_ATEXIT_LOCK();
call_depth++;
diff --git a/libc/stdlib/atexit.h b/libc/stdlib/atexit.h
index 2e88ad6..b530ade 100644
--- a/libc/stdlib/atexit.h
+++ b/libc/stdlib/atexit.h
@@ -45,8 +45,7 @@
__BEGIN_DECLS
-extern int __atexit_invalid;
-extern struct atexit *__atexit; /* points to head of LIFO stack */
+__LIBC_HIDDEN__ extern struct atexit *__atexit; /* points to head of LIFO stack */
int __cxa_atexit(void (*)(void *), void *, void *);
void __cxa_finalize(void *);
diff --git a/libc/upstream-openbsd/android/include/openbsd-compat.h b/libc/upstream-openbsd/android/include/openbsd-compat.h
index 8618e31..f00d91a 100644
--- a/libc/upstream-openbsd/android/include/openbsd-compat.h
+++ b/libc/upstream-openbsd/android/include/openbsd-compat.h
@@ -17,6 +17,8 @@
#ifndef _BIONIC_OPENBSD_COMPAT_H_included
#define _BIONIC_OPENBSD_COMPAT_H_included
+#include <sys/cdefs.h>
+
#define __USE_BSD
/* OpenBSD's <ctype.h> uses these names, which conflicted with stlport.
@@ -34,4 +36,8 @@
/* OpenBSD has this, but we can't really implement it correctly on Linux. */
#define issetugid() 0
+/* LP32 NDK ctype.h contained references to these. */
+__LIBC64_HIDDEN__ extern const short *_tolower_tab_;
+__LIBC64_HIDDEN__ extern const short *_toupper_tab_;
+
#endif