aboutsummaryrefslogtreecommitdiffstats
path: root/libc/Android.mk
diff options
context:
space:
mode:
Diffstat (limited to 'libc/Android.mk')
-rw-r--r--libc/Android.mk574
1 files changed, 359 insertions, 215 deletions
diff --git a/libc/Android.mk b/libc/Android.mk
index 984187f1a..5c625d126 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -1,7 +1,12 @@
-LOCAL_PATH:= $(call my-dir)
+LOCAL_PATH := $(call my-dir)
include $(LOCAL_PATH)/arch-$(TARGET_ARCH)/syscalls.mk
+# Make everything depend on any changes to included makefiles.
+libc_common_additional_dependencies := \
+ $(LOCAL_PATH)/arch-$(TARGET_ARCH)/syscalls.mk \
+ $(LOCAL_PATH)/Android.mk \
+
# Define the common source files for all the libc instances
# =========================================================
libc_common_src_files := \
@@ -45,7 +50,6 @@ libc_common_src_files := \
stdio/wbuf.c \
stdlib/atexit.c \
stdlib/ctype_.c \
- stdlib/exit.c \
stdlib/getenv.c \
stdlib/putenv.c \
stdlib/setenv.c \
@@ -73,18 +77,13 @@ libc_common_src_files := \
bionic/atol.c \
bionic/atoll.c \
bionic/bindresvport.c \
- bionic/bionic_clone.c \
bionic/clearenv.c \
- bionic/cpuacct.c \
bionic/daemon.c \
bionic/err.c \
bionic/ether_aton.c \
bionic/ether_ntoa.c \
- bionic/fcntl.c \
bionic/fdprintf.c \
bionic/flockfile.c \
- bionic/fork.c \
- bionic/fstatfs.c \
bionic/ftime.c \
bionic/ftok.c \
bionic/fts.c \
@@ -100,43 +99,27 @@ libc_common_src_files := \
bionic/isatty.c \
bionic/issetugid.c \
bionic/ldexp.c \
- bionic/lseek64.c \
bionic/md5.c \
bionic/memmem.c \
bionic/memswap.c \
bionic/name_mem.c \
- bionic/openat.c \
- bionic/open.c \
bionic/pathconf.c \
bionic/perror.c \
- bionic/pread.c \
- bionic/pselect.c \
bionic/ptsname.c \
bionic/ptsname_r.c \
bionic/pututline.c \
- bionic/pwrite.c \
bionic/reboot.c \
bionic/recv.c \
bionic/sched_cpualloc.c \
bionic/sched_cpucount.c \
- bionic/sched_getcpu.c \
bionic/semaphore.c \
bionic/send.c \
- bionic/setegid.c \
- bionic/seteuid.c \
bionic/setpgrp.c \
- bionic/setresuid.c \
- bionic/setreuid.c \
- bionic/setuid.c \
bionic/sigblock.c \
bionic/siginterrupt.c \
bionic/siglist.c \
- bionic/signal.c \
bionic/signame.c \
bionic/sigsetmask.c \
- bionic/sigsuspend.c \
- bionic/sleep.c \
- bionic/statfs.c \
bionic/strndup.c \
bionic/strntoimax.c \
bionic/strntoumax.c \
@@ -145,48 +128,61 @@ libc_common_src_files := \
bionic/system_properties_compat.c \
bionic/tcgetpgrp.c \
bionic/tcsetpgrp.c \
- bionic/thread_atexit.c \
bionic/time64.c \
bionic/umount.c \
bionic/unlockpt.c \
- bionic/usleep.c \
bionic/utmp.c \
bionic/wcscoll.c \
- netbsd/gethnamaddr.c \
- netbsd/inet/nsap_addr.c \
- netbsd/resolv/__dn_comp.c \
- netbsd/resolv/__res_close.c \
- netbsd/resolv/__res_send.c \
- netbsd/resolv/herror.c \
- netbsd/resolv/res_comp.c \
- netbsd/resolv/res_data.c \
- netbsd/resolv/res_debug.c \
- netbsd/resolv/res_init.c \
- netbsd/resolv/res_mkquery.c \
- netbsd/resolv/res_query.c \
- netbsd/resolv/res_send.c \
- netbsd/resolv/res_state.c \
- netbsd/resolv/res_cache.c \
- netbsd/net/nsdispatch.c \
- netbsd/net/getaddrinfo.c \
- netbsd/net/getnameinfo.c \
- netbsd/net/getservbyname.c \
- netbsd/net/getservent.c \
- netbsd/net/base64.c \
- netbsd/net/getservbyport.c \
- netbsd/nameser/ns_name.c \
- netbsd/nameser/ns_parse.c \
- netbsd/nameser/ns_ttl.c \
- netbsd/nameser/ns_netint.c \
- netbsd/nameser/ns_print.c \
- netbsd/nameser/ns_samedomain.c \
+
+
+libc_dns_src_files += \
+ netbsd/gethnamaddr.c \
+ netbsd/inet/nsap_addr.c \
+ netbsd/nameser/ns_name.c \
+ netbsd/nameser/ns_netint.c \
+ netbsd/nameser/ns_parse.c \
+ netbsd/nameser/ns_print.c \
+ netbsd/nameser/ns_samedomain.c \
+ netbsd/nameser/ns_ttl.c \
+ netbsd/net/base64.c \
+ netbsd/net/getaddrinfo.c \
+ netbsd/net/getnameinfo.c \
+ netbsd/net/getservbyname.c \
+ netbsd/net/getservbyport.c \
+ netbsd/net/getservent.c \
+ netbsd/net/nsdispatch.c \
+ netbsd/resolv/__dn_comp.c \
+ netbsd/resolv/herror.c \
+ netbsd/resolv/res_cache.c \
+ netbsd/resolv/__res_close.c \
+ netbsd/resolv/res_comp.c \
+ netbsd/resolv/res_data.c \
+ netbsd/resolv/res_debug.c \
+ netbsd/resolv/res_init.c \
+ netbsd/resolv/res_mkquery.c \
+ netbsd/resolv/res_query.c \
+ netbsd/resolv/__res_send.c \
+ netbsd/resolv/res_send.c \
+ netbsd/resolv/res_state.c \
+
+
+# These are used by the 32-bit targets, but not the 64-bit ones.
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm mips x86))
+libc_common_src_files += \
+ bionic/legacy_32_bit_support.cpp \
+ bionic/ndk_cruft.cpp \
+
+endif
# Fortify implementations of libc functions.
libc_common_src_files += \
+ bionic/__FD_chk.cpp \
bionic/__fgets_chk.cpp \
bionic/__memcpy_chk.cpp \
bionic/__memmove_chk.cpp \
bionic/__memset_chk.cpp \
+ bionic/__read_chk.cpp \
+ bionic/__recvfrom_chk.cpp \
bionic/__strcat_chk.cpp \
bionic/__strchr_chk.cpp \
bionic/__strcpy_chk.cpp \
@@ -202,50 +198,109 @@ libc_common_src_files += \
libc_bionic_src_files := \
bionic/abort.cpp \
+ bionic/access.cpp \
bionic/assert.cpp \
+ bionic/bionic_time_conversions.cpp \
bionic/brk.cpp \
+ bionic/chmod.cpp \
+ bionic/chown.cpp \
+ bionic/clone.cpp \
bionic/dirent.cpp \
- bionic/__errno.c \
+ bionic/dup2.cpp \
+ bionic/epoll_create.cpp \
+ bionic/epoll_wait.cpp \
+ bionic/epoll_pwait.cpp \
+ bionic/__errno.cpp \
bionic/eventfd_read.cpp \
bionic/eventfd_write.cpp \
+ bionic/ffs.cpp \
+ bionic/fork.cpp \
bionic/futimens.cpp \
bionic/getauxval.cpp \
bionic/getcwd.cpp \
+ bionic/inotify_init.cpp \
+ bionic/lchown.cpp \
bionic/libc_init_common.cpp \
bionic/libc_logging.cpp \
bionic/libgen.cpp \
- bionic/mmap.cpp \
+ bionic/link.cpp \
+ bionic/lstat.cpp \
+ bionic/mkdir.cpp \
+ bionic/mkfifo.cpp \
+ bionic/mknod.cpp \
+ bionic/open.cpp \
+ bionic/pause.cpp \
+ bionic/pipe.cpp \
+ bionic/poll.cpp \
+ bionic/pthread_atfork.cpp \
bionic/pthread_attr.cpp \
+ bionic/pthread_cond.cpp \
+ bionic/pthread_create.cpp \
bionic/pthread_detach.cpp \
bionic/pthread_equal.cpp \
+ bionic/pthread_exit.cpp \
bionic/pthread_getcpuclockid.cpp \
bionic/pthread_getschedparam.cpp \
bionic/pthread_internals.cpp \
bionic/pthread_join.cpp \
+ bionic/pthread_key.cpp \
bionic/pthread_kill.cpp \
+ bionic/pthread_mutex.cpp \
+ bionic/pthread_once.cpp \
+ bionic/pthread_rwlock.cpp \
bionic/pthread_self.cpp \
bionic/pthread_setname_np.cpp \
bionic/pthread_setschedparam.cpp \
bionic/pthread_sigmask.cpp \
+ bionic/ptrace.cpp \
bionic/raise.cpp \
+ bionic/readlink.cpp \
+ bionic/rename.cpp \
+ bionic/rmdir.cpp \
bionic/sbrk.cpp \
bionic/scandir.cpp \
bionic/sched_getaffinity.cpp \
+ bionic/sched_getcpu.cpp \
+ bionic/setegid.cpp \
bionic/__set_errno.cpp \
+ bionic/seteuid.cpp \
bionic/setlocale.cpp \
bionic/signalfd.cpp \
+ bionic/sigaction.cpp \
+ bionic/sigaddset.cpp \
+ bionic/sigdelset.cpp \
+ bionic/sigemptyset.cpp \
+ bionic/sigfillset.cpp \
+ bionic/sigismember.cpp \
+ bionic/signal.cpp \
+ bionic/sigpending.cpp \
+ bionic/sigprocmask.cpp \
+ bionic/sigsuspend.cpp \
bionic/sigwait.cpp \
+ bionic/stat.cpp \
bionic/statvfs.cpp \
bionic/strerror.cpp \
bionic/strerror_r.cpp \
bionic/strsignal.cpp \
bionic/stubs.cpp \
+ bionic/symlink.cpp \
bionic/sysconf.cpp \
+ bionic/thread_atexit.cpp \
bionic/tdestroy.cpp \
+ bionic/timer.cpp \
bionic/tmpfile.cpp \
+ bionic/unlink.cpp \
+ bionic/utimes.cpp \
bionic/wait.cpp \
bionic/wchar.cpp \
+# These are shared by all the 32-bit targets, but not the 64-bit ones.
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm mips x86))
+libc_bionic_src_files += \
+ bionic/mmap.cpp \
+
+endif
+
libc_tzcode_src_files := \
tzcode/asctime.c \
tzcode/difftime.c \
@@ -254,6 +309,8 @@ libc_tzcode_src_files := \
tzcode/strptime.c \
libc_upstream_freebsd_src_files := \
+ upstream-freebsd/lib/libc/gen/sleep.c \
+ upstream-freebsd/lib/libc/gen/usleep.c \
upstream-freebsd/lib/libc/stdio/clrerr.c \
upstream-freebsd/lib/libc/stdio/fclose.c \
upstream-freebsd/lib/libc/stdio/fdopen.c \
@@ -342,6 +399,7 @@ libc_upstream_netbsd_src_files := \
upstream-netbsd/libc/stdlib/div.c \
upstream-netbsd/libc/stdlib/drand48.c \
upstream-netbsd/libc/stdlib/erand48.c \
+ upstream-netbsd/libc/stdlib/exit.c \
upstream-netbsd/libc/stdlib/jrand48.c \
upstream-netbsd/libc/stdlib/ldiv.c \
upstream-netbsd/libc/stdlib/lldiv.c \
@@ -359,104 +417,134 @@ libc_upstream_netbsd_src_files := \
upstream-netbsd/libc/string/strcasestr.c \
upstream-netbsd/libc/string/strcoll.c \
upstream-netbsd/libc/string/strxfrm.c \
+ upstream-netbsd/libc/thread-stub/__isthreaded.c \
upstream-netbsd/libc/unistd/killpg.c \
# Architecture specific source files go here
# =========================================================
ifeq ($(TARGET_ARCH),arm)
libc_common_src_files += \
- bionic/memmove.c.arm \
- string/bcopy.c \
- string/strncmp.c \
- string/strncat.c \
- string/strncpy.c \
- bionic/strchr.cpp \
- string/strrchr.c \
- bionic/memchr.c \
- bionic/memrchr.c \
- string/index.c \
- bionic/strnlen.c \
- string/strlcat.c \
- string/strlcpy.c \
- upstream-freebsd/lib/libc/string/wcschr.c \
- upstream-freebsd/lib/libc/string/wcsrchr.c \
- upstream-freebsd/lib/libc/string/wcscmp.c \
- upstream-freebsd/lib/libc/string/wcscpy.c \
- upstream-freebsd/lib/libc/string/wmemcmp.c \
- upstream-freebsd/lib/libc/string/wcslen.c \
- upstream-freebsd/lib/libc/string/wcscat.c
-
-# These files need to be arm so that gdbserver
-# can set breakpoints in them without messing
-# up any thumb code.
-libc_common_src_files += \
- bionic/pthread-atfork.c.arm \
- bionic/pthread-rwlocks.c.arm \
- bionic/pthread-timers.c.arm \
- bionic/ptrace.c.arm
-
-libc_static_common_src_files += \
- bionic/pthread.c.arm \
- bionic/pthread_create.cpp.arm \
- bionic/pthread_key.cpp.arm \
+ bionic/memchr.c \
+ bionic/memmove.c.arm \
+ bionic/memrchr.c \
+ bionic/strchr.cpp \
+ bionic/strnlen.c \
+ string/bcopy.c \
+ string/index.c \
+ string/strlcat.c \
+ string/strlcpy.c \
+ string/strncat.c \
+ string/strncmp.c \
+ string/strncpy.c \
+ string/strrchr.c \
+ upstream-freebsd/lib/libc/string/wcscat.c \
+ upstream-freebsd/lib/libc/string/wcschr.c \
+ upstream-freebsd/lib/libc/string/wcscmp.c \
+ upstream-freebsd/lib/libc/string/wcscpy.c \
+ upstream-freebsd/lib/libc/string/wcslen.c \
+ upstream-freebsd/lib/libc/string/wcsrchr.c \
+ upstream-freebsd/lib/libc/string/wmemcmp.c \
endif # arm
-ifeq ($(TARGET_ARCH),x86)
+ifeq ($(TARGET_ARCH), arm64)
+#TODO: Replace C stubs with optimised assembly
libc_common_src_files += \
- bionic/pthread-atfork.c \
- bionic/pthread-rwlocks.c \
- bionic/pthread-timers.c \
- bionic/ptrace.c \
-
-libc_static_common_src_files += \
- bionic/pthread.c \
- bionic/pthread_create.cpp \
- bionic/pthread_key.cpp \
-
-endif # x86
+ bionic/memchr.c \
+ bionic/memcmp.c \
+ bionic/memcpy.c \
+ bionic/memmove.c \
+ bionic/memrchr.c \
+ bionic/memset.c \
+ bionic/strchr.cpp \
+ bionic/strnlen.c \
+ string/bcopy.c \
+ string/index.c \
+ string/memcmp16.c \
+ string/strcat.c \
+ string/strcmp.c \
+ string/strcpy.c \
+ string/strlcat.c \
+ string/strlcpy.c \
+ string/strlen.c \
+ string/strncat.c \
+ string/strncmp.c \
+ string/strncpy.c \
+ string/strrchr.c \
+ upstream-freebsd/lib/libc/string/wcscat.c \
+ upstream-freebsd/lib/libc/string/wcschr.c \
+ upstream-freebsd/lib/libc/string/wcscmp.c \
+ upstream-freebsd/lib/libc/string/wcscpy.c \
+ upstream-freebsd/lib/libc/string/wcslen.c \
+ upstream-freebsd/lib/libc/string/wcsrchr.c \
+ upstream-freebsd/lib/libc/string/wmemcmp.c \
+
+endif # arm64
ifeq ($(TARGET_ARCH),mips)
libc_common_src_files += \
- bionic/memcmp.c \
- string/bcopy.c \
- string/strcmp.c \
- string/strcpy.c \
- string/strncmp.c \
- string/strcat.c \
- string/strncat.c \
- string/strncpy.c \
- bionic/strchr.cpp \
- string/strrchr.c \
- bionic/memchr.c \
- bionic/memrchr.c \
- string/index.c \
- bionic/strnlen.c \
- string/strlcat.c \
- string/strlcpy.c \
- upstream-freebsd/lib/libc/string/wcschr.c \
- upstream-freebsd/lib/libc/string/wcsrchr.c \
- upstream-freebsd/lib/libc/string/wcscmp.c \
- upstream-freebsd/lib/libc/string/wcscpy.c \
- upstream-freebsd/lib/libc/string/wmemcmp.c \
- upstream-freebsd/lib/libc/string/wcslen.c \
- upstream-freebsd/lib/libc/string/wcscat.c
-
-libc_common_src_files += \
- bionic/pthread-atfork.c \
- bionic/pthread-rwlocks.c \
- bionic/pthread-timers.c \
- bionic/ptrace.c
-
-libc_static_common_src_files += \
- bionic/pthread.c \
- bionic/pthread_create.cpp \
- bionic/pthread_key.cpp \
+ bionic/memchr.c \
+ bionic/memcmp.c \
+ bionic/memrchr.c \
+ bionic/strchr.cpp \
+ bionic/strnlen.c \
+ string/bcopy.c \
+ string/index.c \
+ string/strcat.c \
+ string/strcmp.c \
+ string/strcpy.c \
+ string/strlcat.c \
+ string/strlcpy.c \
+ string/strncat.c \
+ string/strncmp.c \
+ string/strncpy.c \
+ string/strrchr.c \
+ upstream-freebsd/lib/libc/string/wcscat.c \
+ upstream-freebsd/lib/libc/string/wcschr.c \
+ upstream-freebsd/lib/libc/string/wcscmp.c \
+ upstream-freebsd/lib/libc/string/wcscpy.c \
+ upstream-freebsd/lib/libc/string/wcslen.c \
+ upstream-freebsd/lib/libc/string/wcsrchr.c \
+ upstream-freebsd/lib/libc/string/wmemcmp.c \
endif # mips
-ifeq ($(strip $(TARGET_CPU_VARIANT)),)
-$(warning TARGET_CPU_VARIANT is not defined)
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86_64))
+libc_common_src_files += \
+ bionic/memchr.c \
+ bionic/memcmp.c \
+ bionic/memcpy.c \
+ bionic/memmove.c \
+ bionic/memrchr.c \
+ bionic/memset.c \
+ bionic/strchr.cpp \
+ bionic/strnlen.c \
+ string/bcopy.c \
+ string/index.c \
+ string/strcat.c \
+ string/strcmp.c \
+ string/strcpy.c \
+ string/strlcat.c \
+ string/strlcpy.c \
+ string/strlen.c \
+ string/strncat.c \
+ string/strncmp.c \
+ string/strncpy.c \
+ string/strrchr.c \
+ upstream-freebsd/lib/libc/string/wcscat.c \
+ upstream-freebsd/lib/libc/string/wcschr.c \
+ upstream-freebsd/lib/libc/string/wcscmp.c \
+ upstream-freebsd/lib/libc/string/wcscpy.c \
+ upstream-freebsd/lib/libc/string/wcslen.c \
+ upstream-freebsd/lib/libc/string/wcsrchr.c \
+ upstream-freebsd/lib/libc/string/wmemcmp.c \
+
+endif # x86_64
+
+ifeq ($(TARGET_ARCH),arm)
+ ifeq ($(strip $(TARGET_CPU_VARIANT)),)
+ $(warning TARGET_ARCH is arm, but TARGET_CPU_VARIANT is not defined)
+ endif
endif
###########################################################
@@ -482,25 +570,30 @@ _LIBC_ARCH_COMMON_SRC_FILES :=
_LIBC_ARCH_CPU_VARIANT_SRC_FILES :=
_LIBC_ARCH_STATIC_SRC_FILES :=
_LIBC_ARCH_DYNAMIC_SRC_FILES :=
-include bionic/libc/arch-$(TARGET_ARCH)/$(TARGET_ARCH).mk
+_LIBC_ARCH_ADDITIONAL_DEPENDENCIES :=
-libc_common_src_files += $(_LIBC_ARCH_COMMON_SRC_FILES)
-libc_common_src_files += $(_LIBC_ARCH_CPU_VARIANT_SRC_FILES)
+libc_common_additional_dependencies += \
+ $(LOCAL_PATH)/arch-$(TARGET_ARCH)/$(TARGET_ARCH).mk
+include $(LOCAL_PATH)/arch-$(TARGET_ARCH)/$(TARGET_ARCH).mk
+
+libc_bionic_src_files += $(_LIBC_ARCH_COMMON_SRC_FILES)
+libc_bionic_src_files += $(_LIBC_ARCH_CPU_VARIANT_SRC_FILES)
libc_arch_static_src_files := $(_LIBC_ARCH_STATIC_SRC_FILES)
libc_arch_dynamic_src_files := $(_LIBC_ARCH_DYNAMIC_SRC_FILES)
+libc_common_additional_dependencies += $(_LIBC_ARCH_ADDITIONAL_DEPENDENCIES)
# Define some common cflags
# ========================================================
libc_common_cflags := \
- -DWITH_ERRLIST \
-DANDROID_CHANGES \
-D_LIBC=1 \
- -DFLOATING_POINT \
- -DINET6 \
- -I$(LOCAL_PATH)/private \
- -DPOSIX_MISTAKE \
- -DLOG_ON_HEAP_ERROR \
- -Wall -Wextra
+ -Wall -Wextra \
+
+# Try to catch typical 32-bit assumptions that break with 64-bit pointers.
+libc_common_cflags += \
+ -Werror=pointer-to-int-cast \
+ -Werror=int-to-pointer-cast \
+ -Werror=type-limits \
ifeq ($(strip $(DEBUG_BIONIC_LIBC)),true)
libc_common_cflags += -DDEBUG
@@ -513,31 +606,36 @@ ifneq ($(BOARD_MALLOC_ALIGNMENT),)
libc_common_cflags += -DMALLOC_ALIGNMENT=$(BOARD_MALLOC_ALIGNMENT)
endif
+# crtbrand.c needs <stdint.h> and a #define for the platform SDK version.
+libc_crt_target_cflags := \
+ -I$(LOCAL_PATH)/include \
+ -I$(LOCAL_PATH)/arch-$(TARGET_ARCH)/include \
+ -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) \
+
ifeq ($(TARGET_ARCH),arm)
libc_common_cflags += -DSOFTFLOAT
libc_common_cflags += -fstrict-aliasing
- libc_crt_target_cflags := -mthumb-interwork
-endif # !arm
-
-ifeq ($(TARGET_ARCH),x86)
- libc_common_cflags += -DSOFTFLOAT
- libc_crt_target_cflags :=
- ifeq ($(ARCH_X86_HAVE_SSE2),true)
- libc_crt_target_cflags += -DUSE_SSE2=1
- endif
- ifeq ($(ARCH_X86_HAVE_SSSE3),true)
- libc_crt_target_cflags += -DUSE_SSSE3=1
- endif
-endif # x86
+ libc_crt_target_cflags += -mthumb-interwork
+endif # arm
ifeq ($(TARGET_ARCH),mips)
ifneq ($(ARCH_MIPS_HAS_FPU),true)
libc_common_cflags += -DSOFTFLOAT
endif
libc_common_cflags += -fstrict-aliasing
- libc_crt_target_cflags := $(TARGET_GLOBAL_CFLAGS)
+ libc_crt_target_cflags += $(TARGET_GLOBAL_CFLAGS)
endif # mips
+ifeq ($(TARGET_ARCH),x86)
+ libc_crt_target_cflags += -m32
+ libc_crt_target_ldflags := -melf_i386
+endif # x86
+
+ifeq ($(TARGET_ARCH),x86_64)
+ libc_crt_target_cflags += -m64
+ libc_crt_target_ldflags := -melf_x86_64
+endif # x86_64
+
# Define ANDROID_SMP appropriately.
ifeq ($(TARGET_CPU_SMP),true)
libc_common_cflags += -DANDROID_SMP=1
@@ -545,10 +643,13 @@ else
libc_common_cflags += -DANDROID_SMP=0
endif
-# crtbrand.c needs <stdint.h> and a #define for the platform SDK version.
-libc_crt_target_cflags += \
- -I$(LOCAL_PATH)/include \
- -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION)
+# Define some common conlyflags
+libc_common_conlyflags := \
+ -std=gnu99
+
+# Define some common cppflags
+libc_common_cppflags := \
+ -std=gnu++11
# Define some common includes
# ========================================================
@@ -558,17 +659,11 @@ libc_common_c_includes := \
$(LOCAL_PATH)/stdio \
external/safe-iop/include
-# Needed to access private/__dso_handle.h from
-# crtbegin_xxx.S and crtend_xxx.S
-libc_crt_target_cflags += \
- -I$(LOCAL_PATH)/private \
- -I$(LOCAL_PATH)/arch-$(TARGET_ARCH)/include
-
# Define the libc run-time (crt) support object files that must be built,
# which are needed to build all other objects (shared/static libs and
# executables)
# ==========================================================================
-# ARM, MIPS, and x86 all need crtbegin_so/crtend_so.
+# ARM, Arm64, MIPS, and x86 all need crtbegin_so/crtend_so.
#
# For x86, the .init section must point to a function that calls all
# entries in the .ctors section. (on ARM this is done through the
@@ -578,18 +673,24 @@ libc_crt_target_cflags += \
# that will call __cxa_finalize(&__dso_handle) in order to ensure that
# static C++ destructors are properly called on dlclose().
#
+libc_crt_target_crtbegin_file := $(LOCAL_PATH)/arch-common/bionic/crtbegin.c
+libc_crt_target_crtbegin_so_file := $(LOCAL_PATH)/arch-common/bionic/crtbegin_so.c
+
ifeq ($(TARGET_ARCH),arm)
libc_crt_target_so_cflags :=
endif
+ifeq ($(TARGET_ARCH),arm64)
+ libc_crt_target_so_cflags :=
+ libc_crt_target_crtbegin_file := $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtbegin.c
+endif
ifeq ($(TARGET_ARCH),mips)
libc_crt_target_so_cflags := -fPIC
+ libc_crt_target_crtbegin_file := $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtbegin.c
endif
-ifeq ($(TARGET_ARCH),x86)
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
libc_crt_target_so_cflags := -fPIC
endif
libc_crt_target_so_cflags += $(libc_crt_target_cflags)
-libc_crt_target_crtbegin_file := $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtbegin.c
-libc_crt_target_crtbegin_so_file := $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtbegin_so.c
# See the comment in crtbrand.c for the reason why we need to generate
# crtbrand.s before generating crtbrand.o.
@@ -619,7 +720,7 @@ $(GEN): $(libc_crt_target_crtbegin_so_file)
ALL_GENERATED_SOURCES += $(GEN)
GEN := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o
-$(GEN): $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtend_so.S
+$(GEN): $(LOCAL_PATH)/arch-common/bionic/crtend_so.S
@mkdir -p $(dir $@)
$(hide) $(TARGET_CC) $(libc_crt_target_so_cflags) \
-MD -MF $(@:%.o=%.d) -o $@ -c $<
@@ -651,7 +752,7 @@ ALL_GENERATED_SOURCES += $(GEN)
GEN := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o
$(GEN): $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static1.o $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.o
@mkdir -p $(dir $@)
- $(hide) $(TARGET_LD) -r -o $@ $^
+ $(hide) $(TARGET_LD) $(libc_crt_target_ldflags) -r -o $@ $^
ALL_GENERATED_SOURCES += $(GEN)
GEN := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic1.o
@@ -666,13 +767,13 @@ ALL_GENERATED_SOURCES += $(GEN)
GEN := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o
$(GEN): $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic1.o $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.o
@mkdir -p $(dir $@)
- $(hide) $(TARGET_LD) -r -o $@ $^
+ $(hide) $(TARGET_LD) $(libc_crt_target_ldflags) -r -o $@ $^
ALL_GENERATED_SOURCES += $(GEN)
# We rename crtend.o to crtend_android.o to avoid a
# name clash between gcc and bionic.
GEN := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_android.o
-$(GEN): $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtend.S
+$(GEN): $(LOCAL_PATH)/arch-common/bionic/crtend.S
@mkdir -p $(dir $@)
$(hide) $(TARGET_CC) $(libc_crt_target_cflags) \
-MD -MF $(@:%.o=%.d) -o $@ -c $<
@@ -697,9 +798,11 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := bionic/__stack_chk_fail.cpp
LOCAL_CFLAGS := $(libc_common_cflags) -fno-stack-protector -Werror
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libbionic_ssp
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SYSTEM_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)
@@ -714,14 +817,38 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_tzcode_src_files)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
- -std=gnu99 \
-DSTD_INSPIRED=1 \
-DTZDIR=\"/system/usr/share/zoneinfo\" \
-DTM_GMTOFF=tm_gmtoff \
-DUSG_COMPAT=1
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_tzcode
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+
+include $(BUILD_STATIC_LIBRARY)
+
+
+# ========================================================
+# libc_dns.a - modified NetBSD DNS code
+# ========================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_dns_src_files)
+LOCAL_CFLAGS := \
+ $(libc_common_cflags) \
+ -DINET6 \
+ -I$(LOCAL_PATH)/private \
+ -I$(LOCAL_PATH)/upstream-netbsd/libc/include # for NetBSD private headers
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_MODULE := libc_dns
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SYSTEM_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)
@@ -742,9 +869,11 @@ LOCAL_CFLAGS := \
-I$(LOCAL_PATH)/upstream-freebsd \
-I$(LOCAL_PATH)/upstream-freebsd/libc/include \
-include upstream-freebsd/freebsd-compat.h
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_freebsd
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SYSTEM_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)
@@ -762,12 +891,15 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_upstream_netbsd_src_files)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
+ -DPOSIX_MISTAKE \
-I$(LOCAL_PATH)/upstream-netbsd \
-I$(LOCAL_PATH)/upstream-netbsd/libc/include \
-include upstream-netbsd/netbsd-compat.h
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_netbsd
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SYSTEM_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)
@@ -776,16 +908,22 @@ include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc_bionic.a - home-grown C library code
# ========================================================
-#
+
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_bionic_src_files)
LOCAL_CFLAGS := $(libc_common_cflags) -Werror
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_bionic
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SYSTEM_SHARED_LIBRARIES :=
+# Set -DPTHREAD_DEBUG_ENABLED=true to enable support for pthread deadlock prediction.
+# Since this code is experimental it is disabled by default.
+LOCAL_CFLAGS += $(libc_common_cflags) -DPTHREAD_DEBUG_ENABLED=false
+
include $(BUILD_STATIC_LIBRARY)
@@ -796,18 +934,20 @@ include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_common_src_files)
-LOCAL_CFLAGS := $(libc_common_cflags) \
- -std=gnu99 \
- -I$(LOCAL_PATH)/upstream-netbsd/libc/include # for netbsd private headers
+LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_common
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_WHOLE_STATIC_LIBRARIES := \
libbionic_ssp \
libc_bionic \
+ libc_dns \
libc_freebsd \
libc_netbsd \
- libc_tzcode
+ libc_tzcode \
+
LOCAL_SYSTEM_SHARED_LIBRARIES :=
# TODO: split out the asflags.
@@ -835,11 +975,12 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_CFLAGS := $(libc_common_cflags) \
- -DLIBC_STATIC \
- -std=gnu99
+ -DLIBC_STATIC
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_MODULE := libc_nomalloc
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_SYSTEM_SHARED_LIBRARIES :=
@@ -859,11 +1000,12 @@ LOCAL_SRC_FILES := \
bionic/libc_init_static.cpp
LOCAL_CFLAGS := $(libc_common_cflags) \
- -DLIBC_STATIC \
- -std=gnu99
+ -DLIBC_STATIC
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_SYSTEM_SHARED_LIBRARIES :=
@@ -875,36 +1017,34 @@ include $(BUILD_STATIC_LIBRARY)
# ========================================================
include $(CLEAR_VARS)
-# pthread deadlock prediction:
-# set -DPTHREAD_DEBUG -DPTHREAD_DEBUG_ENABLED=1 to enable support for
-# pthread deadlock prediction.
-# Since this code is experimental it is disabled by default.
-# see libc/bionic/pthread_debug.c for details
-
-LOCAL_CFLAGS := $(libc_common_cflags) -std=gnu99 -DPTHREAD_DEBUG -DPTHREAD_DEBUG_ENABLED=0
+LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_SRC_FILES := \
- $(libc_arch_dynamic_src_files) \
- $(libc_static_common_src_files) \
- bionic/dlmalloc.c \
- bionic/malloc_debug_common.cpp \
- bionic/pthread_debug.cpp \
- bionic/libc_init_dynamic.cpp
+ $(libc_arch_dynamic_src_files) \
+ $(libc_static_common_src_files) \
+ bionic/dlmalloc.c \
+ bionic/malloc_debug_common.cpp \
+ bionic/debug_mapinfo.cpp \
+ bionic/debug_stacktrace.cpp \
+ bionic/pthread_debug.cpp \
+ bionic/libc_init_dynamic.cpp \
ifeq ($(TARGET_ARCH),arm)
LOCAL_NO_CRT := true
LOCAL_CFLAGS += -DCRT_LEGACY_WORKAROUND
LOCAL_SRC_FILES := \
- arch-arm/bionic/crtbegin_so.c \
+ arch-common/bionic/crtbegin_so.c \
arch-arm/bionic/atexit_legacy.c \
$(LOCAL_SRC_FILES) \
- arch-arm/bionic/crtend_so.S
+ arch-common/bionic/crtend_so.S
endif
LOCAL_MODULE:= libc
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_REQUIRED_MODULES := tzdata
# WARNING: The only library libc.so should depend on is libdl.so! If you add other libraries,
@@ -938,6 +1078,8 @@ include $(CLEAR_VARS)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-DMALLOC_LEAK_CHECK
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
@@ -948,7 +1090,7 @@ LOCAL_SRC_FILES := \
bionic/malloc_debug_check.cpp \
LOCAL_MODULE:= libc_malloc_debug_leak
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SHARED_LIBRARIES := libc libdl
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
@@ -969,6 +1111,8 @@ include $(CLEAR_VARS)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-DMALLOC_QEMU_INSTRUMENT
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
@@ -976,7 +1120,7 @@ LOCAL_SRC_FILES := \
bionic/malloc_debug_qemu.cpp
LOCAL_MODULE:= libc_malloc_debug_qemu
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SHARED_LIBRARIES := libc libdl
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common