am 1e754556: am e5ede93a: Merge "Header/symbol for unknown arch."

* commit '1e7545563715492251509916ca2133337e0da174':
  Header/symbol for unknown arch.
diff --git a/ndk/platforms/android-21/arch-p/include/_FORBIDDEN_HEADER.h b/ndk/platforms/android-21/arch-p/include/_FORBIDDEN_HEADER.h
new file mode 100644
index 0000000..99fea7d
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/_FORBIDDEN_HEADER.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef _FORBIDDEN_HEADER_H
+#define _FORBIDDEN_HEADER_H
+
+#ifndef NDEBUG
+#warning "The header file should not included directly by user."
+#endif
+
+#endif
diff --git a/ndk/platforms/android-21/arch-p/include/asm/auxvec.h b/ndk/platforms/android-21/arch-p/include/asm/auxvec.h
new file mode 100644
index 0000000..2fa0e6b
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/auxvec.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/auxvec.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/bitsperlong.h b/ndk/platforms/android-21/arch-p/include/asm/bitsperlong.h
new file mode 100644
index 0000000..f7d5d77
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/bitsperlong.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifdef __LP64__
+#define __BITS_PER_LONG 64
+#else
+#define __BITS_PER_LONG 32
+#endif
+#include <asm-generic/bitsperlong.h>
+
diff --git a/ndk/platforms/android-21/arch-p/include/asm/byteorder.h b/ndk/platforms/android-21/arch-p/include/asm/byteorder.h
new file mode 100644
index 0000000..6f17a48
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/byteorder.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_ARM_BYTEORDER_H
+#define __ASM_ARM_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-21/arch-p/include/asm/errno.h b/ndk/platforms/android-21/arch-p/include/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/errno.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/errno.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/fcntl.h b/ndk/platforms/android-21/arch-p/include/asm/fcntl.h
new file mode 100644
index 0000000..cb5399e
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/fcntl.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _TARGET_FCNTL_H
+#define _TARGET_FCNTL_H
+
+#define O_DIRECTORY 040000  // TODO: x86, mips family needs to be fixed
+#define O_NOFOLLOW 0100000
+#define O_DIRECT 0200000
+#define O_LARGEFILE 0400000
+#include <asm-generic/fcntl.h>
+
+#endif
diff --git a/ndk/platforms/android-21/arch-p/include/asm/ioctl.h b/ndk/platforms/android-21/arch-p/include/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/ioctl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctl.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/ioctls.h b/ndk/platforms/android-21/arch-p/include/asm/ioctls.h
new file mode 100644
index 0000000..f3381f8
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/ioctls.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_TARGET_IOCTLS_H
+#define __ASM_TARGET_IOCTLS_H
+#define FIOQSIZE 0x545E
+#include <asm-generic/ioctls.h>
+#endif
diff --git a/ndk/platforms/android-21/arch-p/include/asm/ipcbuf.h b/ndk/platforms/android-21/arch-p/include/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/ipcbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ipcbuf.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/mman.h b/ndk/platforms/android-21/arch-p/include/asm/mman.h
new file mode 100644
index 0000000..6c23fb6
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/mman.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/mman.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/msgbuf.h b/ndk/platforms/android-21/arch-p/include/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/msgbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/msgbuf.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/param.h b/ndk/platforms/android-21/arch-p/include/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/param.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/param.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/poll.h b/ndk/platforms/android-21/arch-p/include/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/poll.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/poll.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/posix_types.h b/ndk/platforms/android-21/arch-p/include/asm/posix_types.h
new file mode 100644
index 0000000..b0bebdb
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/posix_types.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ARCH_ARM_POSIX_TYPES_H
+#define __ARCH_ARM_POSIX_TYPES_H
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/ndk/platforms/android-21/arch-p/include/asm/resource.h b/ndk/platforms/android-21/arch-p/include/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/resource.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/resource.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/sembuf.h b/ndk/platforms/android-21/arch-p/include/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/sembuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sembuf.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/shmbuf.h b/ndk/platforms/android-21/arch-p/include/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/shmbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/shmbuf.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/sigcontext.h b/ndk/platforms/android-21/arch-p/include/asm/sigcontext.h
new file mode 100644
index 0000000..b671110
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/sigcontext.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <_FORBIDDEN_HEADER.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/siginfo.h b/ndk/platforms/android-21/arch-p/include/asm/siginfo.h
new file mode 100644
index 0000000..eb212a0
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/siginfo.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_SIGINFO_H
+#define __ASM_SIGINFO_H
+#include <asm-generic/siginfo.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-21/arch-p/include/asm/signal.h b/ndk/platforms/android-21/arch-p/include/asm/signal.h
new file mode 100644
index 0000000..c436b6f
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/signal.h
@@ -0,0 +1,104 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_SIGNAL_H
+#define __ASM_SIGNAL_H
+
+#ifdef __LP64__
+
+#include <asm-generic/signal.h>
+
+#else // ! __LP64__
+
+#include <linux/types.h>
+#include <linux/time.h>
+#include <linux/compiler.h>
+struct siginfo;
+#define _KERNEL_NSIG 32
+typedef unsigned long sigset_t;
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#define __SIGRTMAX _KERNEL__NSIG
+#define SA_NOCLDSTOP 0x00000001u
+#define SA_NOCLDWAIT 0x00000002u
+#define SA_SIGINFO 0x00000004u
+#define SA_ONSTACK 0x08000000u
+#define SA_RESTART 0x10000000u
+#define SA_NODEFER 0x40000000u
+#define SA_RESETHAND 0x80000000u
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#include <asm-generic/signal-defs.h>
+
+struct sigaction {
+ union {
+ __sighandler_t _sa_handler;
+ void (*_sa_sigaction)(int, struct siginfo *, void *);
+ } _u;
+ sigset_t sa_mask;
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+};
+#define sa_handler _u._sa_handler
+#define sa_sigaction _u._sa_sigaction
+
+typedef struct sigaltstack {
+ void __user *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+} stack_t;
+
+#endif // __LP64__
+
+#endif
diff --git a/ndk/platforms/android-21/arch-p/include/asm/socket.h b/ndk/platforms/android-21/arch-p/include/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/socket.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/socket.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/sockios.h b/ndk/platforms/android-21/arch-p/include/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/sockios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sockios.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/stat.h b/ndk/platforms/android-21/arch-p/include/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/stat.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/stat.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/statfs.h b/ndk/platforms/android-21/arch-p/include/asm/statfs.h
new file mode 100644
index 0000000..18ee8de
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/statfs.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_STATFS_H
+#define __ASM_STATFS_H
+#include <asm-generic/statfs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-21/arch-p/include/asm/termbits.h b/ndk/platforms/android-21/arch-p/include/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/termbits.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termbits.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/termios.h b/ndk/platforms/android-21/arch-p/include/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/termios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termios.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/types.h b/ndk/platforms/android-21/arch-p/include/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/types.h>
diff --git a/ndk/platforms/android-21/arch-p/include/asm/unistd.h b/ndk/platforms/android-21/arch-p/include/asm/unistd.h
new file mode 100644
index 0000000..697186a
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/asm/unistd.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/unistd.h>
diff --git a/ndk/platforms/android-21/arch-p/include/linux/eventpoll.h b/ndk/platforms/android-21/arch-p/include/linux/eventpoll.h
new file mode 100644
index 0000000..b671110
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/linux/eventpoll.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <_FORBIDDEN_HEADER.h>
diff --git a/ndk/platforms/android-21/arch-p/include/machine/elf_machdep.h b/ndk/platforms/android-21/arch-p/include/machine/elf_machdep.h
new file mode 100644
index 0000000..b671110
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/machine/elf_machdep.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <_FORBIDDEN_HEADER.h>
diff --git a/ndk/platforms/android-21/arch-p/include/machine/endian.h b/ndk/platforms/android-21/arch-p/include/machine/endian.h
new file mode 100644
index 0000000..d54fc52
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/machine/endian.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _MACHINE_ENDIAN_H_
+#define _MACHINE_ENDIAN_H_
+
+#include <sys/types.h>
+#include <sys/endian.h>
+
+#define _BYTE_ORDER _LITTLE_ENDIAN
+
+#endif /* _MACHINE_ENDIAN_H_ */
diff --git a/ndk/platforms/android-21/arch-p/include/machine/fenv.h b/ndk/platforms/android-21/arch-p/include/machine/fenv.h
new file mode 100644
index 0000000..06fb4a1
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/machine/fenv.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _MACHINE_FENV_H_
+#define _MACHINE_FENV_H_
+
+#include <sys/types.h>
+
+typedef struct {
+  unsigned char a[128];
+} fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. */
+#define FE_INVALID    0x01
+#define FE_DIVBYZERO  0x02
+#define FE_OVERFLOW   0x04
+#define FE_UNDERFLOW  0x08
+#define FE_INEXACT    0x10
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID |\
+                                FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_UPWARD     0x1
+#define FE_DOWNWARD   0x2
+#define FE_TOWARDZERO 0x3
+
+#endif /* _MACHINE_FENV_H_ */
diff --git a/ndk/platforms/android-21/arch-p/include/machine/setjmp.h b/ndk/platforms/android-21/arch-p/include/machine/setjmp.h
new file mode 100644
index 0000000..4e157bd
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/machine/setjmp.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * machine/setjmp.h: machine dependent setjmp-related information.
+ */
+
+/* _JBLEN is the size of a jmp_buf in longs.
+ * Do not modify this value or you will break the ABI !
+ *
+ * This value comes from the original OpenBSD ARM-specific header
+ * that was replaced by this one.
+ */
+#define _JBLEN  160
diff --git a/ndk/platforms/android-21/arch-p/include/sys/cachectl.h b/ndk/platforms/android-21/arch-p/include/sys/cachectl.h
new file mode 100644
index 0000000..b2b333c
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/cachectl.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_CACHECTL_H
+#define _SYS_CACHECTL_H 1
+
+//#ifdef __mips__
+//#include <asm/cachectl.h>
+//extern int __cachectl (void *addr, __const int nbytes, __const int op);
+//extern int _flush_cache (char *addr, __const int nbytes, __const int op);
+//#endif
+#endif /* sys/cachectl.h */
diff --git a/ndk/platforms/android-21/arch-p/include/sys/epoll.h b/ndk/platforms/android-21/arch-p/include/sys/epoll.h
new file mode 100644
index 0000000..c85440e
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/epoll.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _SYS_EPOLL_H_
+#define _SYS_EPOLL_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <fcntl.h> /* For O_CLOEXEC. */
+#include <signal.h> /* For sigset_t. */
+
+__BEGIN_DECLS
+
+#define EPOLLIN          0x00000001
+#define EPOLLPRI         0x00000002
+#define EPOLLOUT         0x00000004
+#define EPOLLERR         0x00000008
+#define EPOLLHUP         0x00000010
+#define EPOLLRDNORM      0x00000040
+#define EPOLLRDBAND      0x00000080
+#define EPOLLWRNORM      0x00000100
+#define EPOLLWRBAND      0x00000200
+#define EPOLLMSG         0x00000400
+#define EPOLLRDHUP       0x00002000
+#define EPOLLWAKEUP      0x20000000
+#define EPOLLONESHOT     0x40000000
+#define EPOLLET          0x80000000
+
+#define EPOLL_CTL_ADD    1
+#define EPOLL_CTL_DEL    2
+#define EPOLL_CTL_MOD    3
+
+#define EPOLL_CLOEXEC O_CLOEXEC
+
+typedef union epoll_data {
+  void* ptr;
+  int fd;
+  uint32_t u32;
+  uint64_t u64;
+} epoll_data_t;
+
+struct epoll_event {
+  uint32_t events;
+  unsigned char __padding[4];
+  epoll_data_t data;
+};
+
+int epoll_create(int);
+int epoll_create1(int);
+int epoll_ctl(int, int, int, struct epoll_event*);
+int epoll_wait(int, struct epoll_event*, int, int);
+int epoll_pwait(int, struct epoll_event*, int, int, const sigset_t*);
+
+__END_DECLS
+
+#endif  /* _SYS_EPOLL_H_ */
diff --git a/ndk/platforms/android-21/arch-p/include/sys/glibc-syscalls.h b/ndk/platforms/android-21/arch-p/include/sys/glibc-syscalls.h
new file mode 100644
index 0000000..b671110
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/glibc-syscalls.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <_FORBIDDEN_HEADER.h>
diff --git a/ndk/platforms/android-21/arch-p/include/sys/ioctl_compat.h b/ndk/platforms/android-21/arch-p/include/sys/ioctl_compat.h
new file mode 100644
index 0000000..5c6b3f8
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/ioctl_compat.h
@@ -0,0 +1,174 @@
+/*	$NetBSD: ioctl_compat.h,v 1.15 2005/12/03 17:10:46 christos Exp $	*/
+
+/*
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)ioctl_compat.h	8.4 (Berkeley) 1/21/94
+ */
+
+#ifndef _SYS_IOCTL_COMPAT_H_
+#define	_SYS_IOCTL_COMPAT_H_
+
+/*#include <sys/ttychars.h>*/
+/*#include <sys/ttydev.h>*/
+
+//#if !defined(__mips__)
+struct tchars {
+	char	t_intrc;	/* interrupt */
+	char	t_quitc;	/* quit */
+	char	t_startc;	/* start output */
+	char	t_stopc;	/* stop output */
+	char	t_eofc;		/* end-of-file */
+	char	t_brkc;		/* input delimiter (like nl) */
+};
+
+struct ltchars {
+	char	t_suspc;	/* stop process signal */
+	char	t_dsuspc;	/* delayed stop process signal */
+	char	t_rprntc;	/* reprint line */
+	char	t_flushc;	/* flush output (toggles) */
+	char	t_werasc;	/* word erase */
+	char	t_lnextc;	/* literal next character */
+};
+
+/*
+ * Structure for TIOCGETP and TIOCSETP ioctls.
+ */
+#ifndef _SGTTYB_
+#define	_SGTTYB_
+struct sgttyb {
+	char	sg_ispeed;		/* input speed */
+	char	sg_ospeed;		/* output speed */
+	char	sg_erase;		/* erase character */
+	char	sg_kill;		/* kill character */
+	short	sg_flags;		/* mode flags */
+};
+#endif
+//#endif
+
+#ifdef USE_OLD_TTY
+# undef  TIOCGETD
+# define TIOCGETD	_IOR('t', 0, int)	/* get line discipline */
+# undef  TIOCSETD
+# define TIOCSETD	_IOW('t', 1, int)	/* set line discipline */
+#else
+# define OTIOCGETD	_IOR('t', 0, int)	/* get line discipline */
+# define OTIOCSETD	_IOW('t', 1, int)	/* set line discipline */
+#endif
+#define	TIOCHPCL	_IO('t', 2)		/* hang up on last close */
+//#if !defined(__mips__)
+#define	TIOCGETP	_IOR('t', 8,struct sgttyb)/* get parameters -- gtty */
+#define	TIOCSETP	_IOW('t', 9,struct sgttyb)/* set parameters -- stty */
+#define	TIOCSETN	_IOW('t',10,struct sgttyb)/* as above, but no flushtty*/
+//#endif
+#define	TIOCSETC	_IOW('t',17,struct tchars)/* set special characters */
+#define	TIOCGETC	_IOR('t',18,struct tchars)/* get special characters */
+#if 0
+/* BUG: a bunch of these conflict with #defines in asm/termbits.h */
+#define		TANDEM		0x00000001	/* send stopc on out q full */
+#define		CBREAK		0x00000002	/* half-cooked mode */
+#define		LCASE		0x00000004	/* simulate lower case */
+#define		ECHO		0x00000008	/* enable echoing */
+#define		CRMOD		0x00000010	/* map \r to \r\n on output */
+#define		RAW		0x00000020	/* no i/o processing */
+#define		ODDP		0x00000040	/* get/send odd parity */
+#define		EVENP		0x00000080	/* get/send even parity */
+#define		ANYP		0x000000c0	/* get any parity/send none */
+#define		NLDELAY		0x00000300	/* \n delay */
+#define			NL0	0x00000000
+#define			NL1	0x00000100	/* tty 37 */
+#define			NL2	0x00000200	/* vt05 */
+#define			NL3	0x00000300
+#define		TBDELAY		0x00000c00	/* horizontal tab delay */
+#define			TAB0	0x00000000
+#define			TAB1	0x00000400	/* tty 37 */
+#define			TAB2	0x00000800
+#define		XTABS		0x00000c00	/* expand tabs on output */
+#define		CRDELAY		0x00003000	/* \r delay */
+#define			CR0	0x00000000
+#define			CR1	0x00001000	/* tn 300 */
+#define			CR2	0x00002000	/* tty 37 */
+#define			CR3	0x00003000	/* concept 100 */
+#define		VTDELAY		0x00004000	/* vertical tab delay */
+#define			FF0	0x00000000
+#define			FF1	0x00004000	/* tty 37 */
+#define		BSDELAY		0x00008000	/* \b delay */
+#define			BS0	0x00000000
+#define			BS1	0x00008000
+#define		ALLDELAY	(NLDELAY|TBDELAY|CRDELAY|VTDELAY|BSDELAY)
+#define		CRTBS		0x00010000	/* do backspacing for crt */
+#define		PRTERA		0x00020000	/* \ ... / erase */
+#define		CRTERA		0x00040000	/* " \b " to wipe out char */
+#define		TILDE		0x00080000	/* hazeltine tilde kludge */
+#define		MDMBUF		0x00100000	/* DTR/DCD hardware flow control */
+#define		LITOUT		0x00200000	/* literal output */
+#define		TOSTOP		0x00400000	/* stop background jobs on output */
+#define		FLUSHO		0x00800000	/* output being flushed (state) */
+#define		NOHANG		0x01000000	/* (no-op) was no SIGHUP on carrier drop */
+#define		L001000		0x02000000
+#define		CRTKIL		0x04000000	/* kill line with " \b " */
+#define		PASS8		0x08000000
+#define		CTLECH		0x10000000	/* echo control chars as ^X */
+#define		PENDIN		0x20000000	/* re-echo input buffer at next read */
+#define		DECCTQ		0x40000000	/* only ^Q starts after ^S */
+#define		NOFLSH		0x80000000	/* don't flush output on signal */
+#endif
+#define	TIOCLBIS	_IOW('t', 127, int)	/* bis local mode bits */
+#define	TIOCLBIC	_IOW('t', 126, int)	/* bic local mode bits */
+#define	TIOCLSET	_IOW('t', 125, int)	/* set entire local mode word */
+#define	TIOCLGET	_IOR('t', 124, int)	/* get local modes */
+#define		LCRTBS		(CRTBS>>16)
+#define		LPRTERA		(PRTERA>>16)
+#define		LCRTERA		(CRTERA>>16)
+#define		LTILDE		(TILDE>>16)
+#define		LMDMBUF		(MDMBUF>>16)
+#define		LLITOUT		(LITOUT>>16)
+#define		LTOSTOP		(TOSTOP>>16)
+#define		LFLUSHO		(FLUSHO>>16)
+#define		LNOHANG		(NOHANG>>16)
+#define		LCRTKIL		(CRTKIL>>16)
+#define		LPASS8		(PASS8>>16)
+#define		LCTLECH		(CTLECH>>16)
+#define		LPENDIN		(PENDIN>>16)
+#define		LDECCTQ		(DECCTQ>>16)
+#define		LNOFLSH		(NOFLSH>>16)
+//#if !defined(__mips__)
+#define	TIOCSLTC	_IOW('t',117,struct ltchars)/* set local special chars*/
+#define	TIOCGLTC	_IOR('t',116,struct ltchars)/* get local special chars*/
+//#endif
+#define OTIOCCONS	_IO('t', 98)	/* for hp300 -- sans int arg */
+#define	OTTYDISC	0
+#define	NETLDISC	1
+#define	NTTYDISC	2
+
+#endif /* !_SYS_IOCTL_COMPAT_H_ */
diff --git a/ndk/platforms/android-21/arch-p/include/sys/reg.h b/ndk/platforms/android-21/arch-p/include/sys/reg.h
new file mode 100644
index 0000000..b671110
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/reg.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <_FORBIDDEN_HEADER.h>
diff --git a/ndk/platforms/android-21/arch-p/include/sys/socket.h b/ndk/platforms/android-21/arch-p/include/sys/socket.h
new file mode 100644
index 0000000..f8f4df3
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/socket.h
@@ -0,0 +1,328 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _SYS_SOCKET_H_
+#define _SYS_SOCKET_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <linux/socket.h>
+
+#include <asm/fcntl.h>
+#include <asm/socket.h>
+#include <linux/sockios.h>
+#include <linux/uio.h>
+#include <linux/types.h>
+#include <linux/compiler.h>
+
+__BEGIN_DECLS
+
+#define sockaddr_storage __kernel_sockaddr_storage
+typedef unsigned short sa_family_t;
+
+struct timespec;
+
+#ifdef __mips__
+#define SOCK_DGRAM      1
+#define SOCK_STREAM     2
+#define SOCK_RAW        3
+#define SOCK_RDM        4
+#define SOCK_SEQPACKET  5
+#define SOCK_DCCP       6
+#define SOCK_PACKET     10
+#else
+#define SOCK_STREAM      1
+#define SOCK_DGRAM       2
+#define SOCK_RAW         3
+#define SOCK_RDM         4
+#define SOCK_SEQPACKET   5
+#define SOCK_PACKET      10
+#endif
+
+#define SOCK_CLOEXEC O_CLOEXEC
+#define SOCK_NONBLOCK O_NONBLOCK
+
+enum {
+  SHUT_RD = 0,
+#define SHUT_RD         SHUT_RD
+  SHUT_WR,
+#define SHUT_WR         SHUT_WR
+  SHUT_RDWR
+#define SHUT_RDWR       SHUT_RDWR
+};
+
+struct sockaddr {
+  sa_family_t sa_family;
+  char sa_data[14];
+};
+
+struct linger {
+  int l_onoff;
+  int l_linger;
+};
+
+struct msghdr {
+  void* msg_name;
+  socklen_t msg_namelen;
+  struct iovec* msg_iov;
+  size_t msg_iovlen;
+  void* msg_control;
+  size_t msg_controllen;
+  int msg_flags;
+};
+
+struct mmsghdr {
+  struct msghdr msg_hdr;
+  unsigned int msg_len;
+};
+
+struct cmsghdr {
+  size_t cmsg_len;
+  int cmsg_level;
+  int cmsg_type;
+};
+
+#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr((mhdr), (cmsg))
+#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) )
+#define CMSG_DATA(cmsg) ((void*)((char*)(cmsg) + CMSG_ALIGN(sizeof(struct cmsghdr))))
+#define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len))
+#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
+#define CMSG_FIRSTHDR(msg) \
+  ((msg)->msg_controllen >= sizeof(struct cmsghdr) \
+   ? (struct cmsghdr*) (msg)->msg_control : (struct cmsghdr*) NULL)
+#define CMSG_OK(mhdr, cmsg) ((cmsg)->cmsg_len >= sizeof(struct cmsghdr) &&   (cmsg)->cmsg_len <= (unsigned long)   ((mhdr)->msg_controllen -   ((char*)(cmsg) - (char*)(mhdr)->msg_control)))
+
+struct cmsghdr* __cmsg_nxthdr(struct msghdr*, struct cmsghdr*);
+
+#define SCM_RIGHTS 0x01
+#define SCM_CREDENTIALS 0x02
+#define SCM_SECURITY 0x03
+
+struct ucred {
+  pid_t pid;
+  uid_t uid;
+  gid_t gid;
+};
+
+#define AF_UNSPEC 0
+#define AF_UNIX 1
+#define AF_LOCAL 1
+#define AF_INET 2
+#define AF_AX25 3
+#define AF_IPX 4
+#define AF_APPLETALK 5
+#define AF_NETROM 6
+#define AF_BRIDGE 7
+#define AF_ATMPVC 8
+#define AF_X25 9
+#define AF_INET6 10
+#define AF_ROSE 11
+#define AF_DECnet 12
+#define AF_NETBEUI 13
+#define AF_SECURITY 14
+#define AF_KEY 15
+#define AF_NETLINK 16
+#define AF_ROUTE AF_NETLINK
+#define AF_PACKET 17
+#define AF_ASH 18
+#define AF_ECONET 19
+#define AF_ATMSVC 20
+#define AF_RDS 21
+#define AF_SNA 22
+#define AF_IRDA 23
+#define AF_PPPOX 24
+#define AF_WANPIPE 25
+#define AF_LLC 26
+#define AF_CAN 29
+#define AF_TIPC 30
+#define AF_BLUETOOTH 31
+#define AF_IUCV 32
+#define AF_RXRPC 33
+#define AF_ISDN 34
+#define AF_PHONET 35
+#define AF_IEEE802154 36
+#define AF_CAIF 37
+#define AF_ALG 38
+#define AF_MAX 39
+
+#define PF_UNSPEC AF_UNSPEC
+#define PF_UNIX AF_UNIX
+#define PF_LOCAL AF_LOCAL
+#define PF_INET AF_INET
+#define PF_AX25 AF_AX25
+#define PF_IPX AF_IPX
+#define PF_APPLETALK AF_APPLETALK
+#define PF_NETROM AF_NETROM
+#define PF_BRIDGE AF_BRIDGE
+#define PF_ATMPVC AF_ATMPVC
+#define PF_X25 AF_X25
+#define PF_INET6 AF_INET6
+#define PF_ROSE AF_ROSE
+#define PF_DECnet AF_DECnet
+#define PF_NETBEUI AF_NETBEUI
+#define PF_SECURITY AF_SECURITY
+#define PF_KEY AF_KEY
+#define PF_NETLINK AF_NETLINK
+#define PF_ROUTE AF_ROUTE
+#define PF_PACKET AF_PACKET
+#define PF_ASH AF_ASH
+#define PF_ECONET AF_ECONET
+#define PF_ATMSVC AF_ATMSVC
+#define PF_RDS AF_RDS
+#define PF_SNA AF_SNA
+#define PF_IRDA AF_IRDA
+#define PF_PPPOX AF_PPPOX
+#define PF_WANPIPE AF_WANPIPE
+#define PF_LLC AF_LLC
+#define PF_CAN AF_CAN
+#define PF_TIPC AF_TIPC
+#define PF_BLUETOOTH AF_BLUETOOTH
+#define PF_IUCV AF_IUCV
+#define PF_RXRPC AF_RXRPC
+#define PF_ISDN AF_ISDN
+#define PF_PHONET AF_PHONET
+#define PF_IEEE802154 AF_IEEE802154
+#define PF_CAIF AF_CAIF
+#define PF_ALG AF_ALG
+#define PF_MAX AF_MAX
+
+#define SOMAXCONN 128
+
+#define MSG_OOB 1
+#define MSG_PEEK 2
+#define MSG_DONTROUTE 4
+#define MSG_TRYHARD 4
+#define MSG_CTRUNC 8
+#define MSG_PROBE 0x10
+#define MSG_TRUNC 0x20
+#define MSG_DONTWAIT 0x40
+#define MSG_EOR 0x80
+#define MSG_WAITALL 0x100
+#define MSG_FIN 0x200
+#define MSG_SYN 0x400
+#define MSG_CONFIRM 0x800
+#define MSG_RST 0x1000
+#define MSG_ERRQUEUE 0x2000
+#define MSG_NOSIGNAL 0x4000
+#define MSG_MORE 0x8000
+#define MSG_WAITFORONE 0x10000
+#define MSG_FASTOPEN 0x20000000
+#define MSG_CMSG_CLOEXEC 0x40000000
+#define MSG_EOF MSG_FIN
+#define MSG_CMSG_COMPAT 0
+
+#define SOL_IP 0
+#define SOL_TCP 6
+#define SOL_UDP 17
+#define SOL_IPV6 41
+#define SOL_ICMPV6 58
+#define SOL_SCTP 132
+#define SOL_RAW 255
+#define SOL_IPX 256
+#define SOL_AX25 257
+#define SOL_ATALK 258
+#define SOL_NETROM 259
+#define SOL_ROSE 260
+#define SOL_DECNET 261
+#define SOL_X25 262
+#define SOL_PACKET 263
+#define SOL_ATM 264
+#define SOL_AAL 265
+#define SOL_IRDA 266
+#define SOL_NETBEUI 267
+#define SOL_LLC 268
+#define SOL_DCCP 269
+#define SOL_NETLINK 270
+#define SOL_TIPC 271
+
+#define IPX_TYPE 1
+
+# define __socketcall extern
+
+__socketcall int accept(int, struct sockaddr*, socklen_t*);
+__socketcall int accept4(int, struct sockaddr*, socklen_t*, int);
+__socketcall int bind(int, const struct sockaddr*, int);
+__socketcall int connect(int, const struct sockaddr*, socklen_t);
+__socketcall int getpeername(int, struct sockaddr*, socklen_t*);
+__socketcall int getsockname(int, struct sockaddr*, socklen_t*);
+__socketcall int getsockopt(int, int, int, void*, socklen_t*);
+__socketcall int listen(int, int);
+__socketcall int recvmmsg(int, struct mmsghdr*, unsigned int, int, const struct timespec*);
+__socketcall int recvmsg(int, struct msghdr*, int);
+__socketcall int sendmmsg(int, const struct mmsghdr*, unsigned int, int);
+__socketcall int sendmsg(int, const struct msghdr*, int);
+__socketcall int setsockopt(int, int, int, const void*, socklen_t);
+__socketcall int shutdown(int, int);
+__socketcall int socket(int, int, int);
+__socketcall int socketpair(int, int, int, int*);
+
+extern ssize_t send(int, const void*, size_t, int);
+extern ssize_t recv(int, void*, size_t, int);
+
+__socketcall ssize_t sendto(int, const void*, size_t, int, const struct sockaddr*, socklen_t);
+__socketcall ssize_t recvfrom(int, void*, size_t, int, const struct sockaddr*, socklen_t*);
+
+#if defined(__BIONIC_FORTIFY)
+__errordecl(__recvfrom_error, "recvfrom called with size bigger than buffer");
+extern ssize_t __recvfrom_chk(int, void*, size_t, size_t, int, const struct sockaddr*, socklen_t*);
+extern ssize_t __recvfrom_real(int, void*, size_t, int, const struct sockaddr*, socklen_t*)
+    __asm__(__USER_LABEL_PREFIX__ "recvfrom");
+
+__BIONIC_FORTIFY_INLINE
+ssize_t recvfrom(int fd, void* buf, size_t len, int flags, const struct sockaddr* src_addr, socklen_t* addr_len) {
+  size_t bos = __bos0(buf);
+
+#if !defined(__clang__)
+  if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+    return __recvfrom_real(fd, buf, len, flags, src_addr, addr_len);
+  }
+
+  if (__builtin_constant_p(len) && (len <= bos)) {
+    return __recvfrom_real(fd, buf, len, flags, src_addr, addr_len);
+  }
+
+  if (__builtin_constant_p(len) && (len > bos)) {
+    __recvfrom_error();
+  }
+#endif
+
+  return __recvfrom_chk(fd, buf, len, bos, flags, src_addr, addr_len);
+}
+
+__BIONIC_FORTIFY_INLINE
+ssize_t recv(int socket, void* buf, size_t len, int flags) {
+  return recvfrom(socket, buf, len, flags, NULL, 0);
+}
+
+#endif /* __BIONIC_FORTIFY */
+
+#undef __socketcall
+
+__END_DECLS
+
+#endif /* _SYS_SOCKET_H */
diff --git a/ndk/platforms/android-21/arch-p/include/sys/stat.h b/ndk/platforms/android-21/arch-p/include/sys/stat.h
new file mode 100644
index 0000000..95ab1de
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/stat.h
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_STAT_H_
+#define _SYS_STAT_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <linux/stat.h>
+
+#include <endian.h>
+
+__BEGIN_DECLS
+
+#define __STAT64_BODY \
+  unsigned long st_dev; \
+  unsigned long st_ino; \
+  unsigned long st_mode; \
+  unsigned long st_nlink; \
+  uid_t st_uid; /* 32-bit uid_t */ \
+  unsigned char padding[4]; \
+  gid_t st_gid; /* 32-bit gid_t */ \
+  unsigned char padding2[4]; \
+  unsigned long st_rdev; \
+  long st_size; \
+  long st_blksize; \
+  long st_blocks; \
+  long st_atime; \
+  unsigned long st_atime_nsec; \
+  long st_mtime; \
+  unsigned long st_mtime_nsec; \
+  long st_ctime; \
+  unsigned long st_ctime_nsec; \
+  unsigned char padding3[8];
+
+struct stat { __STAT64_BODY };
+struct stat64 { __STAT64_BODY };
+
+#undef __STAT64_BODY
+
+#define st_atimensec st_atime_nsec
+#define st_mtimensec st_mtime_nsec
+#define st_ctimensec st_ctime_nsec
+
+#ifdef __USE_BSD
+/* Permission macros provided by glibc for compatibility with BSDs. */
+#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* 0777 */
+#define ALLPERMS    (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO) /* 07777 */
+#define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) /* 0666 */
+#endif
+
+extern int chmod(const char*, mode_t);
+extern int fchmod(int, mode_t);
+extern int mkdir(const char*, mode_t);
+
+extern int fstat(int, struct stat*);
+extern int fstat64(int, struct stat64*);
+extern int fstatat(int, const char*, struct stat*, int);
+extern int fstatat64(int, const char*, struct stat64*, int);
+extern int lstat(const char*, struct stat*);
+extern int lstat64(const char*, struct stat64*);
+extern int stat(const char*, struct stat*);
+extern int stat64(const char*, struct stat64*);
+
+extern int mknod(const char*, mode_t, dev_t);
+extern mode_t umask(mode_t);
+
+#if defined(__BIONIC_FORTIFY)
+
+extern mode_t __umask_chk(mode_t);
+extern mode_t __umask_real(mode_t) __asm__(__USER_LABEL_PREFIX__ "umask");
+__errordecl(__umask_invalid_mode, "umask called with invalid mode");
+
+__BIONIC_FORTIFY_INLINE
+mode_t umask(mode_t mode) {
+#if !defined(__clang__)
+  if (__builtin_constant_p(mode)) {
+    if ((mode & 0777) != mode) {
+      __umask_invalid_mode();
+    }
+    return __umask_real(mode);
+  }
+#endif
+  return __umask_chk(mode);
+}
+#endif /* defined(__BIONIC_FORTIFY) */
+
+extern int mkfifo(const char*, mode_t);
+
+extern int fchmodat(int, const char*, mode_t, int);
+extern int mkdirat(int, const char*, mode_t);
+extern int mknodat(int, const char*, mode_t, dev_t);
+
+#define UTIME_NOW  ((1L << 30) - 1L)
+#define UTIME_OMIT ((1L << 30) - 2L)
+extern int utimensat(int fd, const char *path, const struct timespec times[2], int flags);
+extern int futimens(int fd, const struct timespec times[2]);
+
+__END_DECLS
+
+#endif /* _SYS_STAT_H_ */
diff --git a/ndk/platforms/android-21/arch-p/include/sys/ucontext.h b/ndk/platforms/android-21/arch-p/include/sys/ucontext.h
new file mode 100644
index 0000000..b671110
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/ucontext.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <_FORBIDDEN_HEADER.h>
diff --git a/ndk/platforms/android-21/arch-p/include/sys/user.h b/ndk/platforms/android-21/arch-p/include/sys/user.h
new file mode 100644
index 0000000..b671110
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/user.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <_FORBIDDEN_HEADER.h>
diff --git a/ndk/platforms/android-21/arch-p/include/sys/vfs.h b/ndk/platforms/android-21/arch-p/include/sys/vfs.h
new file mode 100644
index 0000000..194c229
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/include/sys/vfs.h
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_VFS_H_
+#define _SYS_VFS_H_
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+/* The kernel's __kernel_fsid_t has a 'val' member but glibc uses '__val'. */
+typedef struct { int __val[2]; } __fsid_t;
+typedef __fsid_t fsid_t;
+
+#define __STATFS64_BODY \
+  uint64_t f_type; \
+  uint64_t f_bsize; \
+  uint64_t f_blocks; \
+  uint64_t f_bfree; \
+  uint64_t f_bavail; \
+  uint64_t f_files; \
+  uint64_t f_ffree; \
+  fsid_t f_fsid; \
+  uint64_t f_namelen; \
+  uint64_t f_frsize; \
+  uint64_t f_flags; \
+  uint64_t f_spare[5];
+
+
+struct statfs { __STATFS64_BODY };
+struct statfs64 { __STATFS64_BODY };
+
+#undef __STATFS64_BODY
+
+/* Declare that we have the f_namelen, f_frsize, and f_flags fields. */
+#define _STATFS_F_NAMELEN
+#define _STATFS_F_FRSIZE
+#define _STATFS_F_FLAGS
+
+#define  ADFS_SUPER_MAGIC      0xadf5
+#define  AFFS_SUPER_MAGIC      0xADFF
+#define  BEFS_SUPER_MAGIC      0x42465331
+#define  BFS_MAGIC             0x1BADFACE
+#define  CIFS_MAGIC_NUMBER     0xFF534D42
+#define  CODA_SUPER_MAGIC      0x73757245
+#define  COH_SUPER_MAGIC       0x012FF7B7
+#define  CRAMFS_MAGIC          0x28cd3d45
+#define  DEVFS_SUPER_MAGIC     0x1373
+#define  EFS_SUPER_MAGIC       0x00414A53
+#define  EXT_SUPER_MAGIC       0x137D
+#define  EXT2_OLD_SUPER_MAGIC  0xEF51
+#define  EXT2_SUPER_MAGIC      0xEF53
+#define  EXT3_SUPER_MAGIC      0xEF53
+#define  HFS_SUPER_MAGIC       0x4244
+#define  HPFS_SUPER_MAGIC      0xF995E849
+#define  HUGETLBFS_MAGIC       0x958458f6
+#define  ISOFS_SUPER_MAGIC     0x9660
+#define  JFFS2_SUPER_MAGIC     0x72b6
+#define  JFS_SUPER_MAGIC       0x3153464a
+#define  MINIX_SUPER_MAGIC     0x137F /* orig. minix */
+#define  MINIX_SUPER_MAGIC2    0x138F /* 30 char minix */
+#define  MINIX2_SUPER_MAGIC    0x2468 /* minix V2 */
+#define  MINIX2_SUPER_MAGIC2   0x2478 /* minix V2, 30 char names */
+#define  MSDOS_SUPER_MAGIC     0x4d44
+#define  NCP_SUPER_MAGIC       0x564c
+#define  NFS_SUPER_MAGIC       0x6969
+#define  NTFS_SB_MAGIC         0x5346544e
+#define  OPENPROM_SUPER_MAGIC  0x9fa1
+#define  PROC_SUPER_MAGIC      0x9fa0
+#define  QNX4_SUPER_MAGIC      0x002f
+#define  REISERFS_SUPER_MAGIC  0x52654973
+#define  ROMFS_MAGIC           0x7275
+#define  SMB_SUPER_MAGIC       0x517B
+#define  SYSV2_SUPER_MAGIC     0x012FF7B6
+#define  SYSV4_SUPER_MAGIC     0x012FF7B5
+#define  TMPFS_MAGIC           0x01021994
+#define  UDF_SUPER_MAGIC       0x15013346
+#define  UFS_MAGIC             0x00011954
+#define  USBDEVICE_SUPER_MAGIC 0x9fa2
+#define  VXFS_SUPER_MAGIC      0xa501FCF5
+#define  XENIX_SUPER_MAGIC     0x012FF7B4
+#define  XFS_SUPER_MAGIC       0x58465342
+#define  _XIAFS_SUPER_MAGIC    0x012FD16D
+
+extern int statfs(const char*, struct statfs*) __nonnull((1, 2));
+extern int statfs64(const char*, struct statfs64*) __nonnull((1, 2));
+extern int fstatfs(int, struct statfs*) __nonnull((2));
+extern int fstatfs64(int, struct statfs64*) __nonnull((2));
+
+__END_DECLS
+
+#endif /* _SYS_VFS_H_ */
diff --git a/ndk/platforms/android-21/arch-p/symbols/libEGL.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libEGL.so.functions.txt
new file mode 100644
index 0000000..12d92a3
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libEGL.so.functions.txt
@@ -0,0 +1,39 @@
+eglBindAPI
+eglBindTexImage
+eglChooseConfig
+eglCopyBuffers
+eglCreateContext
+eglCreateImageKHR
+eglCreatePbufferFromClientBuffer
+eglCreatePbufferSurface
+eglCreatePixmapSurface
+eglCreateWindowSurface
+eglDestroyContext
+eglDestroyImageKHR
+eglDestroySurface
+eglGetConfigAttrib
+eglGetConfigs
+eglGetCurrentContext
+eglGetCurrentDisplay
+eglGetCurrentSurface
+eglGetDisplay
+eglGetError
+eglGetProcAddress
+eglInitialize
+eglLockSurfaceKHR
+eglMakeCurrent
+eglQueryAPI
+eglQueryContext
+eglQueryString
+eglQuerySurface
+eglReleaseTexImage
+eglReleaseThread
+eglSetSwapRectangleANDROID
+eglSurfaceAttrib
+eglSwapBuffers
+eglSwapInterval
+eglTerminate
+eglUnlockSurfaceKHR
+eglWaitClient
+eglWaitGL
+eglWaitNative
diff --git a/ndk/platforms/android-21/arch-p/symbols/libGLESv1_CM.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libGLESv1_CM.so.functions.txt
new file mode 100644
index 0000000..af65b58
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libGLESv1_CM.so.functions.txt
@@ -0,0 +1,239 @@
+glActiveTexture
+glAlphaFunc
+glAlphaFuncx
+glAlphaFuncxOES
+glBindBuffer
+glBindFramebufferOES
+glBindRenderbufferOES
+glBindTexture
+glBlendEquationOES
+glBlendEquationSeparateOES
+glBlendFunc
+glBlendFuncSeparateOES
+glBufferData
+glBufferSubData
+glCheckFramebufferStatusOES
+glClear
+glClearColor
+glClearColorx
+glClearColorxOES
+glClearDepthf
+glClearDepthfOES
+glClearDepthx
+glClearDepthxOES
+glClearStencil
+glClientActiveTexture
+glClipPlanef
+glClipPlanefOES
+glClipPlanex
+glClipPlanexOES
+glColor4f
+glColor4ub
+glColor4x
+glColor4xOES
+glColorMask
+glColorPointer
+glColorPointerBounds
+glCompressedTexImage2D
+glCompressedTexSubImage2D
+glCopyTexImage2D
+glCopyTexSubImage2D
+glCullFace
+glCurrentPaletteMatrixOES
+glDeleteBuffers
+glDeleteFramebuffersOES
+glDeleteRenderbuffersOES
+glDeleteTextures
+glDepthFunc
+glDepthMask
+glDepthRangef
+glDepthRangefOES
+glDepthRangex
+glDepthRangexOES
+glDisable
+glDisableClientState
+glDrawArrays
+glDrawElements
+glDrawTexfOES
+glDrawTexfvOES
+glDrawTexiOES
+glDrawTexivOES
+glDrawTexsOES
+glDrawTexsvOES
+glDrawTexxOES
+glDrawTexxvOES
+glEGLImageTargetRenderbufferStorageOES
+glEGLImageTargetTexture2DOES
+glEnable
+glEnableClientState
+glFinish
+glFlush
+glFogf
+glFogfv
+glFogx
+glFogxOES
+glFogxv
+glFogxvOES
+glFramebufferRenderbufferOES
+glFramebufferTexture2DOES
+glFrontFace
+glFrustumf
+glFrustumfOES
+glFrustumx
+glFrustumxOES
+glGenBuffers
+glGenerateMipmapOES
+glGenFramebuffersOES
+glGenRenderbuffersOES
+glGenTextures
+glGetBooleanv
+glGetBufferParameteriv
+glGetBufferPointervOES
+glGetClipPlanef
+glGetClipPlanefOES
+glGetClipPlanex
+glGetClipPlanexOES
+glGetError
+glGetFixedv
+glGetFixedvOES
+glGetFloatv
+glGetFramebufferAttachmentParameterivOES
+glGetIntegerv
+glGetLightfv
+glGetLightxv
+glGetLightxvOES
+glGetMaterialfv
+glGetMaterialxv
+glGetMaterialxvOES
+glGetPointerv
+glGetRenderbufferParameterivOES
+glGetString
+glGetTexEnvfv
+glGetTexEnviv
+glGetTexEnvxv
+glGetTexEnvxvOES
+glGetTexGenfvOES
+glGetTexGenivOES
+glGetTexGenxvOES
+glGetTexParameterfv
+glGetTexParameteriv
+glGetTexParameterxv
+glGetTexParameterxvOES
+glHint
+glIsBuffer
+glIsEnabled
+glIsFramebufferOES
+glIsRenderbufferOES
+glIsTexture
+glLightf
+glLightfv
+glLightModelf
+glLightModelfv
+glLightModelx
+glLightModelxOES
+glLightModelxv
+glLightModelxvOES
+glLightx
+glLightxOES
+glLightxv
+glLightxvOES
+glLineWidth
+glLineWidthx
+glLineWidthxOES
+glLoadIdentity
+glLoadMatrixf
+glLoadMatrixx
+glLoadMatrixxOES
+glLoadPaletteFromModelViewMatrixOES
+glLogicOp
+glMapBufferOES
+glMaterialf
+glMaterialfv
+glMaterialx
+glMaterialxOES
+glMaterialxv
+glMaterialxvOES
+glMatrixIndexPointerOES
+glMatrixMode
+glMultiTexCoord4f
+glMultiTexCoord4x
+glMultiTexCoord4xOES
+glMultMatrixf
+glMultMatrixx
+glMultMatrixxOES
+glNormal3f
+glNormal3x
+glNormal3xOES
+glNormalPointer
+glNormalPointerBounds
+glOrthof
+glOrthofOES
+glOrthox
+glOrthoxOES
+glPixelStorei
+glPointParameterf
+glPointParameterfv
+glPointParameterx
+glPointParameterxOES
+glPointParameterxv
+glPointParameterxvOES
+glPointSize
+glPointSizePointerOES
+glPointSizex
+glPointSizexOES
+glPolygonOffset
+glPolygonOffsetx
+glPolygonOffsetxOES
+glPopMatrix
+glPushMatrix
+glQueryMatrixxOES
+glReadPixels
+glRenderbufferStorageOES
+glRotatef
+glRotatex
+glRotatexOES
+glSampleCoverage
+glSampleCoveragex
+glSampleCoveragexOES
+glScalef
+glScalex
+glScalexOES
+glScissor
+glShadeModel
+glStencilFunc
+glStencilMask
+glStencilOp
+glTexCoordPointer
+glTexCoordPointerBounds
+glTexEnvf
+glTexEnvfv
+glTexEnvi
+glTexEnviv
+glTexEnvx
+glTexEnvxOES
+glTexEnvxv
+glTexEnvxvOES
+glTexGenfOES
+glTexGenfvOES
+glTexGeniOES
+glTexGenivOES
+glTexGenxOES
+glTexGenxvOES
+glTexImage2D
+glTexParameterf
+glTexParameterfv
+glTexParameteri
+glTexParameteriv
+glTexParameterx
+glTexParameterxOES
+glTexParameterxv
+glTexParameterxvOES
+glTexSubImage2D
+glTranslatef
+glTranslatex
+glTranslatexOES
+glUnmapBufferOES
+glVertexPointer
+glVertexPointerBounds
+glViewport
+glWeightPointerOES
diff --git a/ndk/platforms/android-21/arch-p/symbols/libGLESv2.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libGLESv2.so.functions.txt
new file mode 100644
index 0000000..8739b3d
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libGLESv2.so.functions.txt
@@ -0,0 +1,177 @@
+glActiveTexture
+glAttachShader
+glBeginPerfMonitorAMD
+glBindAttribLocation
+glBindBuffer
+glBindFramebuffer
+glBindRenderbuffer
+glBindTexture
+glBlendColor
+glBlendEquation
+glBlendEquationSeparate
+glBlendFunc
+glBlendFuncSeparate
+glBufferData
+glBufferSubData
+glCheckFramebufferStatus
+glClear
+glClearColor
+glClearDepthf
+glClearStencil
+glColorMask
+glCompileShader
+glCompressedTexImage2D
+glCompressedTexImage3DOES
+glCompressedTexSubImage2D
+glCompressedTexSubImage3DOES
+glCopyTexImage2D
+glCopyTexSubImage2D
+glCopyTexSubImage3DOES
+glCreateProgram
+glCreateShader
+glCullFace
+glDeleteBuffers
+glDeleteFencesNV
+glDeleteFramebuffers
+glDeletePerfMonitorsAMD
+glDeleteProgram
+glDeleteRenderbuffers
+glDeleteShader
+glDeleteTextures
+glDepthFunc
+glDepthMask
+glDepthRangef
+glDetachShader
+glDisable
+glDisableDriverControlQCOM
+glDisableVertexAttribArray
+glDrawArrays
+glDrawElements
+glEGLImageTargetRenderbufferStorageOES
+glEGLImageTargetTexture2DOES
+glEnable
+glEnableDriverControlQCOM
+glEnableVertexAttribArray
+glEndPerfMonitorAMD
+glFinish
+glFinishFenceNV
+glFlush
+glFramebufferRenderbuffer
+glFramebufferTexture2D
+glFramebufferTexture3DOES
+glFrontFace
+glGenBuffers
+glGenerateMipmap
+glGenFencesNV
+glGenFramebuffers
+glGenPerfMonitorsAMD
+glGenRenderbuffers
+glGenTextures
+glGetActiveAttrib
+glGetActiveUniform
+glGetAttachedShaders
+glGetAttribLocation
+glGetBooleanv
+glGetBufferParameteriv
+glGetBufferPointervOES
+glGetDriverControlsQCOM
+glGetDriverControlStringQCOM
+glGetError
+glGetFenceivNV
+glGetFloatv
+glGetFramebufferAttachmentParameteriv
+glGetIntegerv
+glGetPerfMonitorCounterDataAMD
+glGetPerfMonitorCounterInfoAMD
+glGetPerfMonitorCountersAMD
+glGetPerfMonitorCounterStringAMD
+glGetPerfMonitorGroupsAMD
+glGetPerfMonitorGroupStringAMD
+glGetProgramBinaryOES
+glGetProgramInfoLog
+glGetProgramiv
+glGetRenderbufferParameteriv
+glGetShaderInfoLog
+glGetShaderiv
+glGetShaderPrecisionFormat
+glGetShaderSource
+glGetString
+glGetTexParameterfv
+glGetTexParameteriv
+glGetUniformfv
+glGetUniformiv
+glGetUniformLocation
+glGetVertexAttribfv
+glGetVertexAttribiv
+glGetVertexAttribPointerv
+glHint
+glIsBuffer
+glIsEnabled
+glIsFenceNV
+glIsFramebuffer
+glIsProgram
+glIsRenderbuffer
+glIsShader
+glIsTexture
+glLineWidth
+glLinkProgram
+glMapBufferOES
+glPixelStorei
+glPolygonOffset
+glProgramBinaryOES
+glReadPixels
+glReleaseShaderCompiler
+glRenderbufferStorage
+glSampleCoverage
+glScissor
+glSelectPerfMonitorCountersAMD
+glSetFenceNV
+glShaderBinary
+glShaderSource
+glStencilFunc
+glStencilFuncSeparate
+glStencilMask
+glStencilMaskSeparate
+glStencilOp
+glStencilOpSeparate
+glTestFenceNV
+glTexImage2D
+glTexImage3DOES
+glTexParameterf
+glTexParameterfv
+glTexParameteri
+glTexParameteriv
+glTexSubImage2D
+glTexSubImage3DOES
+glUniform1f
+glUniform1fv
+glUniform1i
+glUniform1iv
+glUniform2f
+glUniform2fv
+glUniform2i
+glUniform2iv
+glUniform3f
+glUniform3fv
+glUniform3i
+glUniform3iv
+glUniform4f
+glUniform4fv
+glUniform4i
+glUniform4iv
+glUniformMatrix2fv
+glUniformMatrix3fv
+glUniformMatrix4fv
+glUnmapBufferOES
+glUseProgram
+glValidateProgram
+glVertexAttrib1f
+glVertexAttrib1fv
+glVertexAttrib2f
+glVertexAttrib2fv
+glVertexAttrib3f
+glVertexAttrib3fv
+glVertexAttrib4f
+glVertexAttrib4fv
+glVertexAttribPointer
+glViewport
diff --git a/ndk/platforms/android-21/arch-p/symbols/libGLESv3.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libGLESv3.so.functions.txt
new file mode 100644
index 0000000..b2510e0
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libGLESv3.so.functions.txt
@@ -0,0 +1,367 @@
+glActiveShaderProgram
+glActiveTexture
+glAttachShader
+glBeginQuery
+glBeginTransformFeedback
+glBindAttribLocation
+glBindBuffer
+glBindBufferBase
+glBindBufferRange
+glBindFramebuffer
+glBindImageTexture
+glBindProgramPipeline
+glBindRenderbuffer
+glBindSampler
+glBindTexture
+glBindTransformFeedback
+glBindVertexArray
+glBindVertexArrayOES
+glBindVertexBuffer
+glBlendBarrierKHR
+glBlendColor
+glBlendEquation
+glBlendEquationiEXT
+glBlendEquationSeparate
+glBlendEquationSeparateiEXT
+glBlendFunc
+glBlendFunciEXT
+glBlendFuncSeparate
+glBlendFuncSeparateiEXT
+glBlitFramebuffer
+glBufferData
+glBufferSubData
+glCheckFramebufferStatus
+glClear
+glClearBufferfi
+glClearBufferfv
+glClearBufferiv
+glClearBufferuiv
+glClearColor
+glClearDepthf
+glClearStencil
+glClientWaitSync
+glColorMask
+glColorMaskiEXT
+glCompileShader
+glCompressedTexImage2D
+glCompressedTexImage3D
+glCompressedTexImage3DOES
+glCompressedTexSubImage2D
+glCompressedTexSubImage3D
+glCompressedTexSubImage3DOES
+glCopyBufferSubData
+glCopyImageSubDataEXT
+glCopyTexImage2D
+glCopyTexSubImage2D
+glCopyTexSubImage3D
+glCopyTexSubImage3DOES
+glCreateProgram
+glCreateShader
+glCreateShaderProgramv
+glCullFace
+glDebugMessageCallbackKHR
+glDebugMessageControlKHR
+glDebugMessageInsertKHR
+glDeleteBuffers
+glDeleteFramebuffers
+glDeleteProgram
+glDeleteProgramPipelines
+glDeleteQueries
+glDeleteRenderbuffers
+glDeleteSamplers
+glDeleteShader
+glDeleteSync
+glDeleteTextures
+glDeleteTransformFeedbacks
+glDeleteVertexArrays
+glDeleteVertexArraysOES
+glDepthFunc
+glDepthMask
+glDepthRangef
+glDetachShader
+glDisable
+glDisableiEXT
+glDisableVertexAttribArray
+glDispatchCompute
+glDispatchComputeIndirect
+glDrawArrays
+glDrawArraysIndirect
+glDrawArraysInstanced
+glDrawBuffers
+glDrawElements
+glDrawElementsIndirect
+glDrawElementsInstanced
+glDrawRangeElements
+glEGLImageTargetRenderbufferStorageOES
+glEGLImageTargetTexture2DOES
+glEnable
+glEnableiEXT
+glEnableVertexAttribArray
+glEndQuery
+glEndTransformFeedback
+glFenceSync
+glFinish
+glFlush
+glFlushMappedBufferRange
+glFramebufferParameteri
+glFramebufferRenderbuffer
+glFramebufferTexture2D
+glFramebufferTexture3DOES
+glFramebufferTextureEXT
+glFramebufferTextureLayer
+glFrontFace
+glGenBuffers
+glGenerateMipmap
+glGenFramebuffers
+glGenProgramPipelines
+glGenQueries
+glGenRenderbuffers
+glGenSamplers
+glGenTextures
+glGenTransformFeedbacks
+glGenVertexArrays
+glGenVertexArraysOES
+glGetActiveAttrib
+glGetActiveUniform
+glGetActiveUniformBlockiv
+glGetActiveUniformBlockName
+glGetActiveUniformsiv
+glGetAttachedShaders
+glGetAttribLocation
+glGetBooleani_v
+glGetBooleanv
+glGetBufferParameteri64v
+glGetBufferParameteriv
+glGetBufferPointerv
+glGetBufferPointervOES
+glGetDebugMessageLogKHR
+glGetError
+glGetFloatv
+glGetFragDataLocation
+glGetFramebufferAttachmentParameteriv
+glGetFramebufferParameteriv
+glGetInteger64i_v
+glGetInteger64v
+glGetIntegeri_v
+glGetIntegerv
+glGetInternalformativ
+glGetMultisamplefv
+glGetObjectLabelKHR
+glGetObjectPtrLabelKHR
+glGetPointervKHR
+glGetProgramBinary
+glGetProgramBinaryOES
+glGetProgramInfoLog
+glGetProgramInterfaceiv
+glGetProgramiv
+glGetProgramPipelineInfoLog
+glGetProgramPipelineiv
+glGetProgramResourceIndex
+glGetProgramResourceiv
+glGetProgramResourceLocation
+glGetProgramResourceName
+glGetQueryiv
+glGetQueryObjectuiv
+glGetRenderbufferParameteriv
+glGetSamplerParameterfv
+glGetSamplerParameterIivEXT
+glGetSamplerParameterIuivEXT
+glGetSamplerParameteriv
+glGetShaderInfoLog
+glGetShaderiv
+glGetShaderPrecisionFormat
+glGetShaderSource
+glGetString
+glGetStringi
+glGetSynciv
+glGetTexLevelParameterfv
+glGetTexLevelParameteriv
+glGetTexParameterfv
+glGetTexParameterIivEXT
+glGetTexParameterIuivEXT
+glGetTexParameteriv
+glGetTransformFeedbackVarying
+glGetUniformBlockIndex
+glGetUniformfv
+glGetUniformIndices
+glGetUniformiv
+glGetUniformLocation
+glGetUniformuiv
+glGetVertexAttribfv
+glGetVertexAttribIiv
+glGetVertexAttribIuiv
+glGetVertexAttribiv
+glGetVertexAttribPointerv
+glHint
+glInvalidateFramebuffer
+glInvalidateSubFramebuffer
+glIsBuffer
+glIsEnabled
+glIsEnablediEXT
+glIsFramebuffer
+glIsProgram
+glIsProgramPipeline
+glIsQuery
+glIsRenderbuffer
+glIsSampler
+glIsShader
+glIsSync
+glIsTexture
+glIsTransformFeedback
+glIsVertexArray
+glIsVertexArrayOES
+glLineWidth
+glLinkProgram
+glMapBufferOES
+glMapBufferRange
+glMemoryBarrier
+glMemoryBarrierByRegion
+glMinSampleShadingOES
+glObjectLabelKHR
+glObjectPtrLabelKHR
+glPatchParameteriEXT
+glPauseTransformFeedback
+glPixelStorei
+glPolygonOffset
+glPopDebugGroupKHR
+glPrimitiveBoundingBoxEXT
+glProgramBinary
+glProgramBinaryOES
+glProgramParameteri
+glProgramUniform1f
+glProgramUniform1fv
+glProgramUniform1i
+glProgramUniform1iv
+glProgramUniform1ui
+glProgramUniform1uiv
+glProgramUniform2f
+glProgramUniform2fv
+glProgramUniform2i
+glProgramUniform2iv
+glProgramUniform2ui
+glProgramUniform2uiv
+glProgramUniform3f
+glProgramUniform3fv
+glProgramUniform3i
+glProgramUniform3iv
+glProgramUniform3ui
+glProgramUniform3uiv
+glProgramUniform4f
+glProgramUniform4fv
+glProgramUniform4i
+glProgramUniform4iv
+glProgramUniform4ui
+glProgramUniform4uiv
+glProgramUniformMatrix2fv
+glProgramUniformMatrix2x3fv
+glProgramUniformMatrix2x4fv
+glProgramUniformMatrix3fv
+glProgramUniformMatrix3x2fv
+glProgramUniformMatrix3x4fv
+glProgramUniformMatrix4fv
+glProgramUniformMatrix4x2fv
+glProgramUniformMatrix4x3fv
+glPushDebugGroupKHR
+glReadBuffer
+glReadPixels
+glReleaseShaderCompiler
+glRenderbufferStorage
+glRenderbufferStorageMultisample
+glResumeTransformFeedback
+glSampleCoverage
+glSampleMaski
+glSamplerParameterf
+glSamplerParameterfv
+glSamplerParameteri
+glSamplerParameterIivEXT
+glSamplerParameterIuivEXT
+glSamplerParameteriv
+glScissor
+glShaderBinary
+glShaderSource
+glStencilFunc
+glStencilFuncSeparate
+glStencilMask
+glStencilMaskSeparate
+glStencilOp
+glStencilOpSeparate
+glTexBufferEXT
+glTexBufferRangeEXT
+glTexImage2D
+glTexImage3D
+glTexImage3DOES
+glTexParameterf
+glTexParameterfv
+glTexParameteri
+glTexParameterIivEXT
+glTexParameterIuivEXT
+glTexParameteriv
+glTexStorage2D
+glTexStorage2DMultisample
+glTexStorage3D
+glTexStorage3DMultisampleOES
+glTexSubImage2D
+glTexSubImage3D
+glTexSubImage3DOES
+glTransformFeedbackVaryings
+glUniform1f
+glUniform1fv
+glUniform1i
+glUniform1iv
+glUniform1ui
+glUniform1uiv
+glUniform2f
+glUniform2fv
+glUniform2i
+glUniform2iv
+glUniform2ui
+glUniform2uiv
+glUniform3f
+glUniform3fv
+glUniform3i
+glUniform3iv
+glUniform3ui
+glUniform3uiv
+glUniform4f
+glUniform4fv
+glUniform4i
+glUniform4iv
+glUniform4ui
+glUniform4uiv
+glUniformBlockBinding
+glUniformMatrix2fv
+glUniformMatrix2x3fv
+glUniformMatrix2x4fv
+glUniformMatrix3fv
+glUniformMatrix3x2fv
+glUniformMatrix3x4fv
+glUniformMatrix4fv
+glUniformMatrix4x2fv
+glUniformMatrix4x3fv
+glUnmapBuffer
+glUnmapBufferOES
+glUseProgram
+glUseProgramStages
+glValidateProgram
+glValidateProgramPipeline
+glVertexAttrib1f
+glVertexAttrib1fv
+glVertexAttrib2f
+glVertexAttrib2fv
+glVertexAttrib3f
+glVertexAttrib3fv
+glVertexAttrib4f
+glVertexAttrib4fv
+glVertexAttribBinding
+glVertexAttribDivisor
+glVertexAttribFormat
+glVertexAttribI4i
+glVertexAttribI4iv
+glVertexAttribI4ui
+glVertexAttribI4uiv
+glVertexAttribIFormat
+glVertexAttribIPointer
+glVertexAttribPointer
+glVertexBindingDivisor
+glViewport
+glWaitSync
diff --git a/ndk/platforms/android-21/arch-p/symbols/libOpenMAXAL.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libOpenMAXAL.so.functions.txt
new file mode 100644
index 0000000..c3a190c
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libOpenMAXAL.so.functions.txt
@@ -0,0 +1,3 @@
+xaCreateEngine
+xaQueryNumSupportedEngineInterfaces
+xaQuerySupportedEngineInterfaces
diff --git a/ndk/platforms/android-21/arch-p/symbols/libOpenMAXAL.so.variables.txt b/ndk/platforms/android-21/arch-p/symbols/libOpenMAXAL.so.variables.txt
new file mode 100644
index 0000000..7ceda9c
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libOpenMAXAL.so.variables.txt
@@ -0,0 +1,41 @@
+XA_IID_ANDROIDBUFFERQUEUESOURCE
+XA_IID_AUDIODECODERCAPABILITIES
+XA_IID_AUDIOENCODER
+XA_IID_AUDIOENCODERCAPABILITIES
+XA_IID_AUDIOIODEVICECAPABILITIES
+XA_IID_CAMERA
+XA_IID_CAMERACAPABILITIES
+XA_IID_CONFIGEXTENSION
+XA_IID_DEVICEVOLUME
+XA_IID_DYNAMICINTERFACEMANAGEMENT
+XA_IID_DYNAMICSOURCE
+XA_IID_ENGINE
+XA_IID_EQUALIZER
+XA_IID_IMAGECONTROLS
+XA_IID_IMAGEDECODERCAPABILITIES
+XA_IID_IMAGEEFFECTS
+XA_IID_IMAGEENCODER
+XA_IID_IMAGEENCODERCAPABILITIES
+XA_IID_LED
+XA_IID_METADATAEXTRACTION
+XA_IID_METADATAINSERTION
+XA_IID_METADATATRAVERSAL
+XA_IID_NULL
+XA_IID_OBJECT
+XA_IID_OUTPUTMIX
+XA_IID_PLAY
+XA_IID_PLAYBACKRATE
+XA_IID_PREFETCHSTATUS
+XA_IID_RADIO
+XA_IID_RDS
+XA_IID_RECORD
+XA_IID_SEEK
+XA_IID_SNAPSHOT
+XA_IID_STREAMINFORMATION
+XA_IID_THREADSYNC
+XA_IID_VIBRA
+XA_IID_VIDEODECODERCAPABILITIES
+XA_IID_VIDEOENCODER
+XA_IID_VIDEOENCODERCAPABILITIES
+XA_IID_VIDEOPOSTPROCESSING
+XA_IID_VOLUME
diff --git a/ndk/platforms/android-21/arch-p/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libOpenSLES.so.functions.txt
new file mode 100644
index 0000000..f69a3e5
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libOpenSLES.so.functions.txt
@@ -0,0 +1,3 @@
+slCreateEngine
+slQueryNumSupportedEngineInterfaces
+slQuerySupportedEngineInterfaces
diff --git a/ndk/platforms/android-21/arch-p/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-21/arch-p/symbols/libOpenSLES.so.variables.txt
new file mode 100644
index 0000000..c7ee7d1
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libOpenSLES.so.variables.txt
@@ -0,0 +1,50 @@
+SL_IID_3DCOMMIT
+SL_IID_3DDOPPLER
+SL_IID_3DGROUPING
+SL_IID_3DLOCATION
+SL_IID_3DMACROSCOPIC
+SL_IID_3DSOURCE
+SL_IID_ANDROIDBUFFERQUEUESOURCE
+SL_IID_ANDROIDCONFIGURATION
+SL_IID_ANDROIDEFFECT
+SL_IID_ANDROIDEFFECTCAPABILITIES
+SL_IID_ANDROIDEFFECTSEND
+SL_IID_ANDROIDSIMPLEBUFFERQUEUE
+SL_IID_AUDIODECODERCAPABILITIES
+SL_IID_AUDIOENCODER
+SL_IID_AUDIOENCODERCAPABILITIES
+SL_IID_AUDIOIODEVICECAPABILITIES
+SL_IID_BASSBOOST
+SL_IID_BUFFERQUEUE
+SL_IID_DEVICEVOLUME
+SL_IID_DYNAMICINTERFACEMANAGEMENT
+SL_IID_DYNAMICSOURCE
+SL_IID_EFFECTSEND
+SL_IID_ENGINE
+SL_IID_ENGINECAPABILITIES
+SL_IID_ENVIRONMENTALREVERB
+SL_IID_EQUALIZER
+SL_IID_LED
+SL_IID_METADATAEXTRACTION
+SL_IID_METADATATRAVERSAL
+SL_IID_MIDIMESSAGE
+SL_IID_MIDIMUTESOLO
+SL_IID_MIDITEMPO
+SL_IID_MIDITIME
+SL_IID_MUTESOLO
+SL_IID_NULL
+SL_IID_OBJECT
+SL_IID_OUTPUTMIX
+SL_IID_PITCH
+SL_IID_PLAY
+SL_IID_PLAYBACKRATE
+SL_IID_PREFETCHSTATUS
+SL_IID_PRESETREVERB
+SL_IID_RATEPITCH
+SL_IID_RECORD
+SL_IID_SEEK
+SL_IID_THREADSYNC
+SL_IID_VIBRA
+SL_IID_VIRTUALIZER
+SL_IID_VISUALIZATION
+SL_IID_VOLUME
diff --git a/ndk/platforms/android-21/arch-p/symbols/libandroid.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libandroid.so.functions.txt
new file mode 100644
index 0000000..a164f8c
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libandroid.so.functions.txt
@@ -0,0 +1,179 @@
+AAsset_close
+AAssetDir_close
+AAssetDir_getNextFileName
+AAssetDir_rewind
+AAsset_getBuffer
+AAsset_getLength
+AAsset_getLength64
+AAsset_getRemainingLength
+AAsset_getRemainingLength64
+AAsset_isAllocated
+AAssetManager_fromJava
+AAssetManager_open
+AAssetManager_openDir
+AAsset_openFileDescriptor
+AAsset_openFileDescriptor64
+AAsset_read
+AAsset_seek
+AAsset_seek64
+AConfiguration_copy
+AConfiguration_delete
+AConfiguration_diff
+AConfiguration_fromAssetManager
+AConfiguration_getCountry
+AConfiguration_getDensity
+AConfiguration_getKeyboard
+AConfiguration_getKeysHidden
+AConfiguration_getLanguage
+AConfiguration_getLayoutDirection
+AConfiguration_getMcc
+AConfiguration_getMnc
+AConfiguration_getNavHidden
+AConfiguration_getNavigation
+AConfiguration_getOrientation
+AConfiguration_getScreenHeightDp
+AConfiguration_getScreenLong
+AConfiguration_getScreenSize
+AConfiguration_getScreenWidthDp
+AConfiguration_getSdkVersion
+AConfiguration_getSmallestScreenWidthDp
+AConfiguration_getTouchscreen
+AConfiguration_getUiModeNight
+AConfiguration_getUiModeType
+AConfiguration_isBetterThan
+AConfiguration_match
+AConfiguration_new
+AConfiguration_setCountry
+AConfiguration_setDensity
+AConfiguration_setKeyboard
+AConfiguration_setKeysHidden
+AConfiguration_setLanguage
+AConfiguration_setLayoutDirection
+AConfiguration_setMcc
+AConfiguration_setMnc
+AConfiguration_setNavHidden
+AConfiguration_setNavigation
+AConfiguration_setOrientation
+AConfiguration_setScreenHeightDp
+AConfiguration_setScreenLong
+AConfiguration_setScreenSize
+AConfiguration_setScreenWidthDp
+AConfiguration_setSdkVersion
+AConfiguration_setSmallestScreenWidthDp
+AConfiguration_setTouchscreen
+AConfiguration_setUiModeNight
+AConfiguration_setUiModeType
+AInputEvent_getDeviceId
+AInputEvent_getSource
+AInputEvent_getType
+AInputQueue_attachLooper
+AInputQueue_detachLooper
+AInputQueue_finishEvent
+AInputQueue_getEvent
+AInputQueue_hasEvents
+AInputQueue_preDispatchEvent
+AKeyEvent_getAction
+AKeyEvent_getDownTime
+AKeyEvent_getEventTime
+AKeyEvent_getFlags
+AKeyEvent_getKeyCode
+AKeyEvent_getMetaState
+AKeyEvent_getRepeatCount
+AKeyEvent_getScanCode
+ALooper_acquire
+ALooper_addFd
+ALooper_forThread
+ALooper_pollAll
+ALooper_pollOnce
+ALooper_prepare
+ALooper_release
+ALooper_removeFd
+ALooper_wake
+AMotionEvent_getAction
+AMotionEvent_getAxisValue
+AMotionEvent_getButtonState
+AMotionEvent_getDownTime
+AMotionEvent_getEdgeFlags
+AMotionEvent_getEventTime
+AMotionEvent_getFlags
+AMotionEvent_getHistoricalAxisValue
+AMotionEvent_getHistoricalEventTime
+AMotionEvent_getHistoricalOrientation
+AMotionEvent_getHistoricalPressure
+AMotionEvent_getHistoricalRawX
+AMotionEvent_getHistoricalRawY
+AMotionEvent_getHistoricalSize
+AMotionEvent_getHistoricalToolMajor
+AMotionEvent_getHistoricalToolMinor
+AMotionEvent_getHistoricalTouchMajor
+AMotionEvent_getHistoricalTouchMinor
+AMotionEvent_getHistoricalX
+AMotionEvent_getHistoricalY
+AMotionEvent_getHistorySize
+AMotionEvent_getMetaState
+AMotionEvent_getOrientation
+AMotionEvent_getPointerCount
+AMotionEvent_getPointerId
+AMotionEvent_getPressure
+AMotionEvent_getRawX
+AMotionEvent_getRawY
+AMotionEvent_getSize
+AMotionEvent_getToolMajor
+AMotionEvent_getToolMinor
+AMotionEvent_getToolType
+AMotionEvent_getTouchMajor
+AMotionEvent_getTouchMinor
+AMotionEvent_getX
+AMotionEvent_getXOffset
+AMotionEvent_getXPrecision
+AMotionEvent_getY
+AMotionEvent_getYOffset
+AMotionEvent_getYPrecision
+ANativeActivity_finish
+ANativeActivity_hideSoftInput
+ANativeActivity_setWindowFlags
+ANativeActivity_setWindowFormat
+ANativeActivity_showSoftInput
+ANativeWindow_acquire
+ANativeWindow_fromSurface
+ANativeWindow_getFormat
+ANativeWindow_getHeight
+ANativeWindow_getWidth
+ANativeWindow_lock
+ANativeWindow_release
+ANativeWindow_setBuffersGeometry
+ANativeWindow_unlockAndPost
+android_getTtsEngine
+AObbInfo_delete
+AObbInfo_getFlags
+AObbInfo_getPackageName
+AObbInfo_getVersion
+AObbScanner_getObbInfo
+ASensorEventQueue_disableSensor
+ASensorEventQueue_enableSensor
+ASensorEventQueue_getEvents
+ASensorEventQueue_hasEvents
+ASensorEventQueue_setEventRate
+ASensor_getFifoMaxEventCount
+ASensor_getFifoReservedEventCount
+ASensor_getMinDelay
+ASensor_getName
+ASensor_getReportingMode
+ASensor_getResolution
+ASensor_getStringType
+ASensor_getType
+ASensor_getVendor
+ASensor_isWakeUpSensor
+ASensorManager_createEventQueue
+ASensorManager_destroyEventQueue
+ASensorManager_getDefaultSensor
+ASensorManager_getDefaultSensorEx
+ASensorManager_getInstance
+ASensorManager_getSensorList
+AStorageManager_delete
+AStorageManager_getMountedObbPath
+AStorageManager_isObbMounted
+AStorageManager_mountObb
+AStorageManager_new
+AStorageManager_unmountObb
+getTtsEngine
diff --git a/ndk/platforms/android-21/arch-p/symbols/libc.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libc.so.functions.txt
new file mode 100644
index 0000000..431be50
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libc.so.functions.txt
@@ -0,0 +1,1287 @@
+abort
+abs
+accept
+accept4
+__accept4
+access
+acct
+__adddf3
+__addsf3
+__aeabi_atexit
+__aeabi_cdcmpeq
+__aeabi_cdcmple
+__aeabi_cdrcmple
+__aeabi_d2f
+__aeabi_d2iz
+__aeabi_dadd
+__aeabi_dcmpeq
+__aeabi_dcmpge
+__aeabi_dcmpgt
+__aeabi_dcmple
+__aeabi_dcmplt
+__aeabi_dcmpun
+__aeabi_ddiv
+__aeabi_dmul
+__aeabi_drsub
+__aeabi_dsub
+__aeabi_f2d
+__aeabi_f2iz
+__aeabi_f2uiz
+__aeabi_fadd
+__aeabi_fcmpun
+__aeabi_fdiv
+__aeabi_fmul
+__aeabi_frsub
+__aeabi_fsub
+__aeabi_i2d
+__aeabi_i2f
+__aeabi_idiv
+__aeabi_idiv0
+__aeabi_idivmod
+__aeabi_l2d
+__aeabi_l2f
+__aeabi_lasr
+__aeabi_ldiv0
+__aeabi_ldivmod
+__aeabi_llsl
+__aeabi_llsr
+__aeabi_lmul
+__aeabi_memclr
+__aeabi_memclr4
+__aeabi_memclr8
+__aeabi_memcpy
+__aeabi_memcpy4
+__aeabi_memcpy8
+__aeabi_memmove
+__aeabi_memmove4
+__aeabi_memmove8
+__aeabi_memset
+__aeabi_memset4
+__aeabi_memset8
+__aeabi_ui2d
+__aeabi_ui2f
+__aeabi_uidiv
+__aeabi_uidivmod
+__aeabi_ul2d
+__aeabi_ul2f
+__aeabi_uldivmod
+__aeabi_unwind_cpp_pr0
+__aeabi_unwind_cpp_pr1
+__aeabi_unwind_cpp_pr2
+alarm
+alphasort
+alphasort64
+android_getaddrinfofornet
+android_gethostbyaddrfornet
+android_gethostbynamefornet
+android_set_abort_message
+arc4random
+arc4random_addrandom
+arc4random_buf
+arc4random_stir
+arc4random_uniform
+__arm_fadvise64_64
+asctime
+asctime64
+asctime64_r
+asctime_r
+__ashldi3
+__ashrdi3
+asprintf
+__assert
+__assert2
+atexit
+atof
+atoi
+atol
+atoll
+__atomic_cmpxchg
+__atomic_dec
+__atomic_inc
+__atomic_swap
+at_quick_exit
+__b64_ntop
+__b64_pton
+basename
+basename_r
+bcopy
+bind
+bindresvport
+brk
+__brk
+bsd_signal
+bsearch
+btowc
+bzero
+c16rtomb
+c32rtomb
+cacheflush
+calloc
+capget
+capset
+cfgetispeed
+cfgetospeed
+cfmakeraw
+cfsetispeed
+cfsetospeed
+cfsetspeed
+chdir
+chmod
+chown
+chroot
+clearenv
+clearerr
+clock
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+close
+closedir
+closelog
+__cmpdf2
+__cmsg_nxthdr
+connect
+__connect
+creat
+creat64
+ctime
+ctime64
+ctime64_r
+ctime_r
+__ctype_get_mb_cur_max
+__cxa_atexit
+__cxa_finalize
+daemon
+delete_module
+difftime
+dirfd
+dirname
+dirname_r
+div
+__divdf3
+__divdi3
+__divsf3
+__divsi3
+dlmalloc_usable_size
+__dn_comp
+__dn_count_labels
+dn_expand
+__dn_skipname
+dprintf
+drand48
+dup
+dup2
+dup3
+duplocale
+endmntent
+endpwent
+endservent
+endusershell
+endutent
+epoll_create
+epoll_create1
+epoll_ctl
+__epoll_pwait
+epoll_pwait
+epoll_wait
+__eqdf2
+erand48
+err
+__errno
+errx
+ether_aton
+ether_aton_r
+ether_ntoa
+ether_ntoa_r
+eventfd
+eventfd_read
+eventfd_write
+execl
+execle
+execlp
+execv
+execve
+execvp
+execvpe
+exit
+_exit
+__exit
+_Exit
+__extendsfdf2
+faccessat
+__fadvise64
+fallocate
+fallocate64
+fchdir
+fchmod
+fchmodat
+fchown
+fchownat
+fclose
+fcntl
+__fcntl64
+fdatasync
+__FD_CLR_chk
+__FD_ISSET_chk
+fdopen
+fdopendir
+fdprintf
+__FD_SET_chk
+feof
+ferror
+fflush
+ffs
+fgetc
+fgetln
+fgetpos
+fgets
+__fgets_chk
+fgetwc
+fgetws
+fgetxattr
+fileno
+__fixdfsi
+__fixsfsi
+__fixunssfsi
+flistxattr
+__floatdidf
+__floatdisf
+__floatsidf
+__floatsisf
+__floatundidf
+__floatundisf
+__floatunsidf
+__floatunsisf
+flock
+flockfile
+_flush_cache
+fnmatch
+fopen
+fork
+fpathconf
+__fpclassify
+__fpclassifyd
+__fpclassifyf
+__fpclassifyl
+__fp_nquery
+__fp_query
+fprintf
+fpurge
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freeaddrinfo
+freelocale
+fremovexattr
+freopen
+fscanf
+fseek
+fseeko
+fsetpos
+fsetxattr
+fstat
+fstat64
+fstatat
+fstatat64
+fstatfs
+fstatfs64
+__fstatfs64
+fstatvfs
+fstatvfs64
+fsync
+ftell
+ftello
+ftime
+ftok
+ftruncate
+ftruncate64
+ftrylockfile
+fts_children
+fts_close
+fts_open
+fts_read
+fts_set
+ftw
+ftw64
+funlockfile
+funopen
+__futex_wait
+__futex_wake
+futimens
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+__gedf2
+getaddrinfo
+getauxval
+getc
+getchar
+getchar_unlocked
+__getcpu
+getc_unlocked
+getcwd
+__getcwd
+getdelim
+getdents
+__getdents64
+getdtablesize
+getegid
+getenv
+geteuid
+getgid
+getgrgid
+getgrnam
+getgrouplist
+getgroups
+__get_h_errno
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostbyname_r
+gethostent
+gethostname
+getitimer
+getline
+getlogin
+_getlong
+get_malloc_leak_info
+getmntent
+getmntent_r
+getnameinfo
+getnetbyaddr
+getnetbyname
+getopt
+getopt_long
+getopt_long_only
+getpagesize
+getpeername
+getpgid
+getpgrp
+getpid
+__getpid
+getppid
+getpriority
+__getpriority
+getprogname
+getprotobyname
+getprotobynumber
+getpt
+getpwnam
+getpwnam_r
+getpwuid
+getpwuid_r
+getresgid
+getresuid
+getrlimit
+getrlimit64
+getrusage
+gets
+getservbyname
+getservbyport
+getservent
+_getshort
+getsid
+getsockname
+getsockopt
+__get_thread
+gettid
+gettimeofday
+__get_tls
+getuid
+getusershell
+getutent
+getwc
+getwchar
+getxattr
+gmtime
+gmtime64
+gmtime64_r
+gmtime_r
+__gnu_ldivmod_helper
+__gnu_uldivmod_helper
+__gnu_Unwind_Backtrace
+__gnu_unwind_execute
+__gnu_Unwind_Find_exidx
+__gnu_Unwind_ForcedUnwind
+__gnu_unwind_frame
+__gnu_Unwind_RaiseException
+__gnu_Unwind_Restore_VFP
+__gnu_Unwind_Restore_VFP_D
+__gnu_Unwind_Restore_VFP_D_16_to_31
+__gnu_Unwind_Restore_WMMXC
+__gnu_Unwind_Restore_WMMXD
+__gnu_Unwind_Resume
+__gnu_Unwind_Resume_or_Rethrow
+__gnu_Unwind_Save_VFP
+__gnu_Unwind_Save_VFP_D
+__gnu_Unwind_Save_VFP_D_16_to_31
+__gnu_Unwind_Save_WMMXC
+__gnu_Unwind_Save_WMMXD
+grantpt
+__gtdf2
+herror
+__hostalias
+hstrerror
+htonl
+htons
+if_indextoname
+if_nametoindex
+imaxabs
+imaxdiv
+index
+inet_addr
+inet_aton
+inet_lnaof
+inet_makeaddr
+inet_netof
+inet_network
+inet_nsap_addr
+inet_nsap_ntoa
+inet_ntoa
+inet_ntop
+inet_pton
+initgroups
+init_module
+initstate
+inotify_add_watch
+inotify_init
+inotify_init1
+inotify_rm_watch
+insque
+ioctl
+__ioctl
+isalnum
+isalnum_l
+isalpha
+isalpha_l
+isascii
+isatty
+isblank
+isblank_l
+iscntrl
+iscntrl_l
+isdigit
+isdigit_l
+isfinite
+__isfinite
+isfinitef
+__isfinitef
+isfinitel
+__isfinitel
+isgraph
+isgraph_l
+isinf
+__isinf
+isinff
+__isinff
+isinfl
+__isinfl
+islower
+islower_l
+isnan
+__isnan
+isnanf
+__isnanf
+isnanl
+__isnanl
+isnormal
+__isnormal
+isnormalf
+__isnormalf
+isnormall
+__isnormall
+isprint
+isprint_l
+ispunct
+ispunct_l
+issetugid
+isspace
+isspace_l
+isupper
+isupper_l
+iswalnum
+iswalnum_l
+iswalpha
+iswalpha_l
+iswblank
+iswblank_l
+iswcntrl
+iswcntrl_l
+iswctype
+iswctype_l
+iswdigit
+iswdigit_l
+iswgraph
+iswgraph_l
+iswlower
+iswlower_l
+iswprint
+iswprint_l
+iswpunct
+iswpunct_l
+iswspace
+iswspace_l
+iswupper
+iswupper_l
+iswxdigit
+iswxdigit_l
+isxdigit
+isxdigit_l
+jrand48
+kill
+killpg
+klogctl
+labs
+lchown
+ldexp
+ldiv
+__ledf2
+lfind
+lgetxattr
+__libc_current_sigrtmax
+__libc_current_sigrtmin
+__libc_init
+link
+linkat
+listen
+listxattr
+llabs
+lldiv
+llistxattr
+__llseek
+localeconv
+localtime
+localtime64
+localtime64_r
+localtime_r
+__loc_aton
+__loc_ntoa
+longjmp
+_longjmp
+lrand48
+lremovexattr
+lsearch
+lseek
+lseek64
+lsetxattr
+__lshrdi3
+lstat
+lstat64
+__ltdf2
+madvise
+mallinfo
+malloc
+malloc_usable_size
+mbrlen
+mbrtoc16
+mbrtoc32
+mbrtowc
+mbsinit
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+memalign
+memccpy
+memchr
+memcmp
+memcpy
+__memcpy_chk
+memmem
+memmove
+__memmove_chk
+memrchr
+memset
+_memset16
+_memset32
+__memset_chk
+memswap
+mincore
+mkdir
+mkdirat
+mkdtemp
+mkfifo
+mknod
+mknodat
+mkstemp
+mkstemp64
+mkstemps
+mktemp
+mktime
+mktime64
+mktime_tz
+mlock
+mlockall
+mmap
+__mmap2
+mmap64
+__moddi3
+mount
+mprotect
+mrand48
+mremap
+msync
+__muldf3
+__muldi3
+__mulsf3
+munlock
+munlockall
+munmap
+nanosleep
+__nedf2
+newlocale
+nftw
+nftw64
+nice
+nrand48
+nsdispatch
+ntohl
+ntohs
+open
+__open
+__open_2
+open64
+openat
+__openat
+__openat_2
+openat64
+opendir
+openlog
+pathconf
+pause
+__p_cdname
+__p_cdnname
+__p_class
+pclose
+perror
+personality
+__p_fqname
+__p_fqnname
+pipe
+pipe2
+poll
+__popcountsi2
+popen
+__p_option
+posix_fadvise
+posix_fadvise64
+posix_fallocate
+posix_fallocate64
+posix_memalign
+posix_openpt
+ppoll
+__ppoll
+__p_query
+__p_rcode
+prctl
+pread
+pread64
+printf
+prlimit
+prlimit64
+__p_secstodate
+pselect
+__pselect6
+psiginfo
+psignal
+pthread_atfork
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstackaddr
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstackaddr
+pthread_attr_setstacksize
+__pthread_cleanup_pop
+__pthread_cleanup_push
+pthread_condattr_destroy
+pthread_condattr_getclock
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setclock
+pthread_condattr_setpshared
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_timedwait_monotonic
+pthread_cond_timedwait_monotonic_np
+pthread_cond_timedwait_relative_np
+pthread_cond_timeout_np
+pthread_cond_wait
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getattr_np
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+__pthread_gettid
+pthread_gettid_np
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutexattr_destroy
+pthread_mutexattr_getpshared
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setpshared
+pthread_mutexattr_settype
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_lock_timeout_np
+pthread_mutex_timedlock
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_once
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_self
+pthread_setname_np
+pthread_setschedparam
+pthread_setspecific
+pthread_sigmask
+__p_time
+ptrace
+__ptrace
+ptsname
+ptsname_r
+__p_type
+putc
+putchar
+putchar_unlocked
+putc_unlocked
+putenv
+__putlong
+puts
+__putshort
+pututline
+putw
+putwc
+putwchar
+pvalloc
+pwrite
+pwrite64
+qsort
+quick_exit
+raise
+rand
+random
+rand_r
+read
+readahead
+__read_chk
+readdir
+readdir64
+readdir64_r
+readdir_r
+readlink
+readlinkat
+readv
+realloc
+realpath
+reboot
+__reboot
+recv
+recvfrom
+__recvfrom_chk
+recvmmsg
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remove
+removexattr
+remque
+rename
+renameat
+__res_close
+__res_dnok
+__res_hnok
+__res_hostalias
+res_init
+__res_isourserver
+__res_mailok
+res_mkquery
+__res_nameinquery
+__res_nclose
+__res_ninit
+__res_nmkquery
+__res_nquery
+__res_nquerydomain
+__res_nsearch
+__res_nsend
+_resolv_delete_cache_for_net
+_resolv_flush_cache_for_net
+_resolv_set_nameservers_for_net
+__res_ownok
+__res_queriesmatch
+res_query
+__res_querydomain
+__res_randomid
+res_search
+__res_send
+__res_send_setqhook
+__res_send_setrhook
+__restore_core_regs
+restore_core_regs
+rewind
+rewinddir
+rmdir
+__rt_sigaction
+__rt_sigpending
+__rt_sigprocmask
+__rt_sigsuspend
+__rt_sigtimedwait
+sbrk
+scandir
+scandir64
+scanf
+__sched_cpualloc
+__sched_cpucount
+__sched_cpufree
+__sched_getaffinity
+sched_getaffinity
+sched_getcpu
+sched_getparam
+sched_get_priority_max
+sched_get_priority_min
+sched_getscheduler
+sched_rr_get_interval
+sched_setaffinity
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+select
+sem_close
+sem_destroy
+sem_getvalue
+sem_init
+sem_open
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendfile
+sendfile64
+sendmmsg
+sendmsg
+sendto
+setbuf
+setbuffer
+setegid
+setenv
+__set_errno
+seteuid
+setfsgid
+setfsuid
+setgid
+setgroups
+setitimer
+setjmp
+_setjmp
+setlinebuf
+setlocale
+setlogmask
+setmntent
+setns
+setpgid
+setpgrp
+setpriority
+setprogname
+setregid
+setresgid
+setresuid
+setreuid
+setrlimit
+setrlimit64
+setservent
+setsid
+setsockopt
+setstate
+__set_thread_area
+__set_tid_address
+settimeofday
+__set_tls
+setuid
+setusershell
+setutent
+setvbuf
+setxattr
+SHA1Final
+SHA1Init
+SHA1Transform
+SHA1Update
+shutdown
+sigaction
+__sigaction
+sigaddset
+sigaltstack
+sigblock
+sigdelset
+sigemptyset
+sigfillset
+siginterrupt
+sigismember
+siglongjmp
+signal
+signalfd
+sigpending
+sigprocmask
+sigsetjmp
+sigsetmask
+sigsuspend
+sigwait
+sleep
+snprintf
+__snprintf_chk
+socket
+__socket
+socketpair
+splice
+sprintf
+__sprintf_chk
+srand
+srand48
+srandom
+__srefill
+__srget
+sscanf
+__stack_chk_fail
+stat
+stat64
+statfs
+statfs64
+__statfs64
+statvfs
+statvfs64
+stpcpy
+__stpcpy_chk
+stpncpy
+__stpncpy_chk
+__stpncpy_chk2
+strcasecmp
+strcasestr
+strcat
+__strcat_chk
+strchr
+__strchr_chk
+strcmp
+strcoll
+strcoll_l
+strcpy
+__strcpy_chk
+strcspn
+strdup
+strerror
+strerror_r
+strftime
+strftime_l
+strlcat
+__strlcat_chk
+strlcpy
+__strlcpy_chk
+strlen
+__strlen_chk
+strncasecmp
+strncat
+__strncat_chk
+strncmp
+strncpy
+__strncpy_chk
+__strncpy_chk2
+strndup
+strnlen
+strntoimax
+strntoumax
+strpbrk
+strptime
+strrchr
+__strrchr_chk
+strsep
+strsignal
+strspn
+strstr
+strtod
+strtof
+strtoimax
+strtok
+strtok_r
+strtol
+strtold
+strtold_l
+strtoll
+strtoll_l
+strtoq
+strtotimeval
+strtoul
+strtoull
+strtoull_l
+strtoumax
+strtouq
+strxfrm
+strxfrm_l
+__subdf3
+__subsf3
+swapoff
+swapon
+__swbuf
+swprintf
+swscanf
+__swsetup
+symlink
+symlinkat
+__sym_ntop
+__sym_ntos
+__sym_ston
+sync
+syscall
+sysconf
+sysinfo
+syslog
+system
+__system_properties_init
+__system_property_add
+__system_property_area_init
+__system_property_find
+__system_property_find_nth
+__system_property_foreach
+__system_property_get
+__system_property_read
+__system_property_serial
+__system_property_set
+__system_property_set_filename
+__system_property_update
+__system_property_wait_any
+sysv_signal
+tcdrain
+tcflow
+tcflush
+tcgetattr
+tcgetpgrp
+tcgetsid
+tcsendbreak
+tcsetattr
+tcsetpgrp
+tdelete
+tdestroy
+tee
+tempnam
+tfind
+tgkill
+time
+timegm
+timegm64
+timelocal
+timelocal64
+__timer_create
+timer_create
+__timer_delete
+timer_delete
+timerfd_create
+timerfd_gettime
+timerfd_settime
+__timer_getoverrun
+timer_getoverrun
+__timer_gettime
+timer_gettime
+__timer_settime
+timer_settime
+times
+tkill
+tmpfile
+tmpnam
+toascii
+tolower
+_tolower
+tolower_l
+toupper
+_toupper
+toupper_l
+towlower
+towlower_l
+towupper
+towupper_l
+truncate
+truncate64
+__truncdfsf2
+tsearch
+ttyname
+ttyname_r
+twalk
+tzset
+__udivdi3
+__udivsi3
+umask
+__umask_chk
+__umoddi3
+umount
+umount2
+uname
+ungetc
+ungetwc
+unlink
+unlinkat
+unlockpt
+__unorddf2
+__unordsf2
+unsetenv
+unshare
+___Unwind_Backtrace
+_Unwind_Backtrace
+_Unwind_Complete
+_Unwind_DeleteException
+___Unwind_ForcedUnwind
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+___Unwind_RaiseException
+_Unwind_RaiseException
+___Unwind_Resume
+_Unwind_Resume
+___Unwind_Resume_or_Rethrow
+_Unwind_Resume_or_Rethrow
+_Unwind_VRS_Get
+_Unwind_VRS_Pop
+_Unwind_VRS_Set
+uselocale
+usleep
+utime
+utimensat
+utimes
+utmpname
+valloc
+vasprintf
+vdprintf
+verr
+verrx
+vfdprintf
+vfork
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vmsplice
+vprintf
+vscanf
+vsnprintf
+__vsnprintf_chk
+vsprintf
+__vsprintf_chk
+vsscanf
+vswprintf
+vswscanf
+vsyslog
+vwarn
+vwarnx
+vwprintf
+vwscanf
+wait
+wait3
+wait4
+__wait4
+waitid
+__waitid
+waitpid
+warn
+warnx
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscoll_l
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslcat
+wcslcpy
+wcslen
+wcsncasecmp
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcsnrtombs
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstof
+wcstoimax
+wcstok
+wcstol
+wcstold
+wcstold_l
+wcstoll
+wcstoll_l
+wcstombs
+wcstoul
+wcstoull
+wcstoull_l
+wcstoumax
+wcswcs
+wcswidth
+wcsxfrm
+wcsxfrm_l
+wctob
+wctomb
+wctype
+wctype_l
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wprintf
+write
+writev
+wscanf
+_Z16__libc_init_vdsov
diff --git a/ndk/platforms/android-21/arch-p/symbols/libc.so.variables.txt b/ndk/platforms/android-21/arch-p/symbols/libc.so.variables.txt
new file mode 100644
index 0000000..954448a
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libc.so.variables.txt
@@ -0,0 +1,27 @@
+__bionic_brk
+__bionic_libgcc_compat_symbols
+_ctype_
+daylight
+__dso_handle
+environ
+__isthreaded
+optarg
+opterr
+optind
+optopt
+optreset
+__page_shift
+__page_size
+__p_class_syms
+__popcount_tab
+__progname
+__p_type_syms
+__sF
+__stack_chk_guard
+sys_siglist
+sys_signame
+__system_property_area__
+timezone
+_tolower_tab_
+_toupper_tab_
+tzname
diff --git a/ndk/platforms/android-21/arch-p/symbols/libdl.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libdl.so.functions.txt
new file mode 100644
index 0000000..bc295eb
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libdl.so.functions.txt
@@ -0,0 +1,10 @@
+android_dlopen_ext
+android_get_LD_LIBRARY_PATH
+android_update_LD_LIBRARY_PATH
+dladdr
+dlclose
+dlerror
+dl_iterate_phdr
+dlopen
+dlsym
+dl_unwind_find_exidx
diff --git a/ndk/platforms/android-21/arch-p/symbols/libjnigraphics.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libjnigraphics.so.functions.txt
new file mode 100644
index 0000000..61612d4
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libjnigraphics.so.functions.txt
@@ -0,0 +1,3 @@
+AndroidBitmap_getInfo
+AndroidBitmap_lockPixels
+AndroidBitmap_unlockPixels
diff --git a/ndk/platforms/android-21/arch-p/symbols/liblog.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/liblog.so.functions.txt
new file mode 100644
index 0000000..d7a4b72
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/liblog.so.functions.txt
@@ -0,0 +1,9 @@
+__android_log_assert
+__android_log_btwrite
+__android_log_buf_print
+__android_log_buf_write
+__android_log_bwrite
+__android_log_dev_available
+__android_log_print
+__android_log_vprint
+__android_log_write
diff --git a/ndk/platforms/android-21/arch-p/symbols/libm.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libm.so.functions.txt
new file mode 100644
index 0000000..2aa8c6c
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libm.so.functions.txt
@@ -0,0 +1,245 @@
+acos
+acosf
+acosh
+acoshf
+acoshl
+acosl
+__aeabi_cfcmpeq
+__aeabi_cfcmple
+__aeabi_cfrcmple
+__aeabi_d2lz
+__aeabi_d2uiz
+__aeabi_d2ulz
+__aeabi_f2lz
+__aeabi_f2ulz
+__aeabi_fcmpeq
+__aeabi_fcmpge
+__aeabi_fcmpgt
+__aeabi_fcmple
+__aeabi_fcmplt
+asin
+asinf
+asinh
+asinhf
+asinhl
+asinl
+atan
+atan2
+atan2f
+atan2l
+atanf
+atanh
+atanhf
+atanhl
+atanl
+cabsl
+cbrt
+cbrtf
+cbrtl
+ceil
+ceilf
+ceill
+__cmpsf2
+copysign
+copysignf
+copysignl
+cos
+cosf
+cosh
+coshf
+coshl
+cosl
+cprojl
+csqrtl
+drem
+dremf
+__eqsf2
+erf
+erfc
+erfcf
+erfcl
+erff
+erfl
+exp
+exp2
+exp2f
+exp2l
+expf
+expl
+expm1
+expm1f
+expm1l
+fabs
+fabsf
+fabsl
+fdim
+fdimf
+fdiml
+feclearexcept
+fedisableexcept
+feenableexcept
+fegetenv
+fegetexcept
+fegetexceptflag
+fegetround
+feholdexcept
+feraiseexcept
+fesetenv
+fesetexceptflag
+fesetround
+fetestexcept
+feupdateenv
+finite
+finitef
+__fixdfdi
+__fixsfdi
+__fixunsdfdi
+__fixunsdfsi
+__fixunssfdi
+floor
+floorf
+floorl
+fma
+fmaf
+fmal
+fmax
+fmaxf
+fmaxl
+fmin
+fminf
+fminl
+fmod
+fmodf
+fmodl
+frexp
+frexpf
+frexpl
+gamma
+gammaf
+gammaf_r
+gamma_r
+__gesf2
+__gtsf2
+hypot
+hypotf
+hypotl
+ilogb
+ilogbf
+ilogbl
+j0
+j0f
+j1
+j1f
+jn
+jnf
+ldexpf
+ldexpl
+__lesf2
+lgamma
+lgammaf
+lgammaf_r
+lgammal
+lgamma_r
+llrint
+llrintf
+llrintl
+llround
+llroundf
+llroundl
+log
+log10
+log10f
+log10l
+log1p
+log1pf
+log1pl
+log2
+log2f
+log2l
+logb
+logbf
+logbl
+logf
+logl
+lrint
+lrintf
+lrintl
+lround
+lroundf
+lroundl
+__ltsf2
+modf
+modff
+modfl
+nan
+nanf
+nanl
+nearbyint
+nearbyintf
+nearbyintl
+__nesf2
+nextafter
+nextafterf
+nextafterl
+nexttoward
+nexttowardf
+nexttowardl
+pow
+powf
+powl
+remainder
+remainderf
+remainderl
+remquo
+remquof
+remquol
+rint
+rintf
+rintl
+round
+roundf
+roundl
+scalb
+scalbf
+scalbln
+scalblnf
+scalblnl
+scalbn
+scalbnf
+scalbnl
+__signbit
+__signbitf
+__signbitl
+significand
+significandf
+significandl
+sin
+sincos
+sincosf
+sincosl
+sinf
+sinh
+sinhf
+sinhl
+sinl
+sqrt
+sqrtf
+sqrtl
+tan
+tanf
+tanh
+tanhf
+tanhl
+tanl
+tgamma
+tgammaf
+tgammal
+trunc
+truncf
+truncl
+y0
+y0f
+y1
+y1f
+yn
+ynf
diff --git a/ndk/platforms/android-21/arch-p/symbols/libm.so.variables.txt b/ndk/platforms/android-21/arch-p/symbols/libm.so.variables.txt
new file mode 100644
index 0000000..a1b63fc
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libm.so.variables.txt
@@ -0,0 +1,2 @@
+__fe_dfl_env
+signgam
diff --git a/ndk/platforms/android-21/arch-p/symbols/libmediandk.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libmediandk.so.functions.txt
new file mode 100644
index 0000000..cdf1681
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libmediandk.so.functions.txt
@@ -0,0 +1,91 @@
+AMediaCodec_configure
+AMediaCodec_createCodecByName
+AMediaCodec_createDecoderByType
+AMediaCodec_createEncoderByType
+AMediaCodecCryptoInfo_delete
+AMediaCodecCryptoInfo_getClearBytes
+AMediaCodecCryptoInfo_getEncryptedBytes
+AMediaCodecCryptoInfo_getIV
+AMediaCodecCryptoInfo_getKey
+AMediaCodecCryptoInfo_getMode
+AMediaCodecCryptoInfo_getNumSubSamples
+AMediaCodecCryptoInfo_new
+AMediaCodec_delete
+AMediaCodec_dequeueInputBuffer
+AMediaCodec_dequeueOutputBuffer
+AMediaCodec_flush
+AMediaCodec_getInputBuffer
+AMediaCodec_getOutputBuffer
+AMediaCodec_getOutputFormat
+AMediaCodec_queueInputBuffer
+AMediaCodec_queueSecureInputBuffer
+AMediaCodec_releaseOutputBuffer
+AMediaCodec_releaseOutputBufferAtTime
+AMediaCodec_start
+AMediaCodec_stop
+AMediaCrypto_delete
+AMediaCrypto_isCryptoSchemeSupported
+AMediaCrypto_new
+AMediaCrypto_requiresSecureDecoderComponent
+AMediaDrm_closeSession
+AMediaDrm_createByUUID
+AMediaDrm_decrypt
+AMediaDrm_encrypt
+AMediaDrm_getKeyRequest
+AMediaDrm_getPropertyByteArray
+AMediaDrm_getPropertyString
+AMediaDrm_getProvisionRequest
+AMediaDrm_getSecureStops
+AMediaDrm_isCryptoSchemeSupported
+AMediaDrm_openSession
+AMediaDrm_provideKeyResponse
+AMediaDrm_provideProvisionResponse
+AMediaDrm_queryKeyStatus
+AMediaDrm_release
+AMediaDrm_releaseSecureStops
+AMediaDrm_removeKeys
+AMediaDrm_restoreKeys
+AMediaDrm_setOnEventListener
+AMediaDrm_setPropertyByteArray
+AMediaDrm_setPropertyString
+AMediaDrm_sign
+AMediaDrm_verify
+AMediaExtractor_advance
+AMediaExtractor_delete
+AMediaExtractor_getPsshInfo
+AMediaExtractor_getSampleCryptoInfo
+AMediaExtractor_getSampleFlags
+AMediaExtractor_getSampleTime
+AMediaExtractor_getSampleTrackIndex
+AMediaExtractor_getTrackCount
+AMediaExtractor_getTrackFormat
+AMediaExtractor_new
+AMediaExtractor_readSampleData
+AMediaExtractor_seekTo
+AMediaExtractor_selectTrack
+AMediaExtractor_setDataSource
+AMediaExtractor_setDataSourceFd
+AMediaExtractor_unselectTrack
+AMediaFormat_delete
+AMediaFormat_getBuffer
+AMediaFormat_getFloat
+AMediaFormat_getInt32
+AMediaFormat_getInt64
+AMediaFormat_getSize
+AMediaFormat_getString
+AMediaFormat_new
+AMediaFormat_setBuffer
+AMediaFormat_setFloat
+AMediaFormat_setInt32
+AMediaFormat_setInt64
+AMediaFormat_setString
+AMediaFormat_toString
+AMediaMuxer_addTrack
+AMediaMuxer_delete
+AMediaMuxer_new
+AMediaMuxer_setLocation
+AMediaMuxer_setOrientationHint
+AMediaMuxer_start
+AMediaMuxer_stop
+AMediaMuxer_writeSampleData
+__popcountdi2
diff --git a/ndk/platforms/android-21/arch-p/symbols/libmediandk.so.variables.txt b/ndk/platforms/android-21/arch-p/symbols/libmediandk.so.variables.txt
new file mode 100644
index 0000000..6b0fbd5
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libmediandk.so.variables.txt
@@ -0,0 +1,24 @@
+AMEDIAFORMAT_KEY_AAC_PROFILE
+AMEDIAFORMAT_KEY_BIT_RATE
+AMEDIAFORMAT_KEY_CHANNEL_COUNT
+AMEDIAFORMAT_KEY_CHANNEL_MASK
+AMEDIAFORMAT_KEY_COLOR_FORMAT
+AMEDIAFORMAT_KEY_DURATION
+AMEDIAFORMAT_KEY_FLAC_COMPRESSION_LEVEL
+AMEDIAFORMAT_KEY_FRAME_RATE
+AMEDIAFORMAT_KEY_HEIGHT
+AMEDIAFORMAT_KEY_I_FRAME_INTERVAL
+AMEDIAFORMAT_KEY_IS_ADTS
+AMEDIAFORMAT_KEY_IS_AUTOSELECT
+AMEDIAFORMAT_KEY_IS_DEFAULT
+AMEDIAFORMAT_KEY_IS_FORCED_SUBTITLE
+AMEDIAFORMAT_KEY_LANGUAGE
+AMEDIAFORMAT_KEY_MAX_HEIGHT
+AMEDIAFORMAT_KEY_MAX_INPUT_SIZE
+AMEDIAFORMAT_KEY_MAX_WIDTH
+AMEDIAFORMAT_KEY_MIME
+AMEDIAFORMAT_KEY_PUSH_BLANK_BUFFERS_ON_STOP
+AMEDIAFORMAT_KEY_REPEAT_PREVIOUS_FRAME_AFTER
+AMEDIAFORMAT_KEY_SAMPLE_RATE
+AMEDIAFORMAT_KEY_STRIDE
+AMEDIAFORMAT_KEY_WIDTH
diff --git a/ndk/platforms/android-21/arch-p/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libstdc++.so.functions.txt
new file mode 100644
index 0000000..3924a3b
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libstdc++.so.functions.txt
@@ -0,0 +1,17 @@
+android_set_abort_message
+__cxa_guard_abort
+__cxa_guard_acquire
+__cxa_guard_release
+__cxa_pure_virtual
+_ZdaPv
+_ZdaPvRKSt9nothrow_t
+_ZdlPv
+_ZdlPvRKSt9nothrow_t
+_Znaj
+_ZnajRKSt9nothrow_t
+_Znam
+_ZnamRKSt9nothrow_t
+_Znwj
+_ZnwjRKSt9nothrow_t
+_Znwm
+_ZnwmRKSt9nothrow_t
diff --git a/ndk/platforms/android-21/arch-p/symbols/libstdc++.so.variables.txt b/ndk/platforms/android-21/arch-p/symbols/libstdc++.so.variables.txt
new file mode 100644
index 0000000..62e9acd
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libstdc++.so.variables.txt
@@ -0,0 +1 @@
+_ZSt7nothrow
diff --git a/ndk/platforms/android-21/arch-p/symbols/libz.so.functions.txt b/ndk/platforms/android-21/arch-p/symbols/libz.so.functions.txt
new file mode 100644
index 0000000..a007fa3
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libz.so.functions.txt
@@ -0,0 +1,130 @@
+adler32
+adler32_combine
+adler32_combine64
+__aeabi_unwind_cpp_pr0
+__aeabi_unwind_cpp_pr1
+__aeabi_unwind_cpp_pr2
+compress
+compress2
+compressBound
+crc32
+crc32_combine
+crc32_combine64
+deflate
+deflateBound
+deflateCopy
+deflateEnd
+deflateInit_
+deflateInit2_
+deflateParams
+deflatePending
+deflatePrime
+deflateReset
+deflateResetKeep
+deflateSetDictionary
+deflateSetHeader
+deflateTune
+get_crc_table
+__gnu_Unwind_Backtrace
+__gnu_unwind_execute
+__gnu_Unwind_ForcedUnwind
+__gnu_unwind_frame
+__gnu_Unwind_RaiseException
+__gnu_Unwind_Restore_VFP
+__gnu_Unwind_Restore_VFP_D
+__gnu_Unwind_Restore_VFP_D_16_to_31
+__gnu_Unwind_Restore_WMMXC
+__gnu_Unwind_Restore_WMMXD
+__gnu_Unwind_Resume
+__gnu_Unwind_Resume_or_Rethrow
+__gnu_Unwind_Save_VFP
+__gnu_Unwind_Save_VFP_D
+__gnu_Unwind_Save_VFP_D_16_to_31
+__gnu_Unwind_Save_WMMXC
+__gnu_Unwind_Save_WMMXD
+gzbuffer
+gzclearerr
+gzclose
+gzclose_r
+gzclose_w
+gzdirect
+gzdopen
+gzeof
+gzerror
+gz_error
+gzflush
+gzgetc
+gzgetc_
+gzgets
+gzoffset
+gzoffset64
+gzopen
+gzopen64
+gzprintf
+gzputc
+gzputs
+gzread
+gzrewind
+gzseek
+gzseek64
+gzsetparams
+gztell
+gztell64
+gzungetc
+gzvprintf
+gzwrite
+inflate
+inflateBack
+inflateBackEnd
+inflateBackInit_
+inflateCopy
+inflateEnd
+inflate_fast
+inflateGetDictionary
+inflateGetHeader
+inflateInit_
+inflateInit2_
+inflateMark
+inflatePrime
+inflateReset
+inflateReset2
+inflateResetKeep
+inflateSetDictionary
+inflateSync
+inflateSyncPoint
+inflate_table
+inflateUndermine
+__restore_core_regs
+restore_core_regs
+_tr_align
+_tr_flush_bits
+_tr_flush_block
+_tr_init
+_tr_stored_block
+_tr_tally
+uncompress
+___Unwind_Backtrace
+_Unwind_Backtrace
+_Unwind_Complete
+_Unwind_DeleteException
+___Unwind_ForcedUnwind
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+___Unwind_RaiseException
+_Unwind_RaiseException
+___Unwind_Resume
+_Unwind_Resume
+___Unwind_Resume_or_Rethrow
+_Unwind_Resume_or_Rethrow
+_Unwind_VRS_Get
+_Unwind_VRS_Pop
+_Unwind_VRS_Set
+zcalloc
+zcfree
+zError
+zlibCompileFlags
+zlibVersion
diff --git a/ndk/platforms/android-21/arch-p/symbols/libz.so.variables.txt b/ndk/platforms/android-21/arch-p/symbols/libz.so.variables.txt
new file mode 100644
index 0000000..b09771a
--- /dev/null
+++ b/ndk/platforms/android-21/arch-p/symbols/libz.so.variables.txt
@@ -0,0 +1,5 @@
+deflate_copyright
+_dist_code
+inflate_copyright
+_length_code
+z_errmsg