From 6df7b609984479c894be81140730578896dbdd8f Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Fri, 15 Aug 2014 14:20:04 -0700 Subject: [PATCH] Hide C++ stuff in libc. Put it back in libstdc++. Bug: 17062445 Change-Id: I027b186719654c2865b08c3fa83f90fa00c1e838 (cherry picked from commit fd5ee9aebc0a43c7f36a0778c7f416b39ddb870e) --- libc/Android.mk | 61 +++++++++++++++++++++++++++++++++++-- libstdc++/Android.mk | 15 --------- libstdc++/src/libstdc++.cpp | 1 - 3 files changed, 58 insertions(+), 19 deletions(-) delete mode 100644 libstdc++/Android.mk delete mode 100644 libstdc++/src/libstdc++.cpp diff --git a/libc/Android.mk b/libc/Android.mk index 727513cb7..32c9fa6cb 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -102,8 +102,6 @@ libc_bionic_src_files := \ bionic/__cmsg_nxthdr.cpp \ bionic/connect.cpp \ bionic/ctype.cpp \ - bionic/__cxa_guard.cpp \ - bionic/__cxa_pure_virtual.cpp \ bionic/dirent.cpp \ bionic/dup2.cpp \ bionic/epoll_create.cpp \ @@ -142,7 +140,6 @@ libc_bionic_src_files := \ bionic/mknod.cpp \ bionic/mntent.cpp \ bionic/NetdClientDispatch.cpp \ - bionic/new.cpp \ bionic/open.cpp \ bionic/pause.cpp \ bionic/pipe.cpp \ @@ -230,6 +227,11 @@ libc_bionic_src_files := \ bionic/wchar.cpp \ bionic/wctype.cpp \ +libc_cxa_src_files := \ + bionic/__cxa_guard.cpp \ + bionic/__cxa_pure_virtual.cpp \ + bionic/new.cpp \ + libc_upstream_freebsd_src_files := \ upstream-freebsd/lib/libc/gen/ldexp.c \ upstream-freebsd/lib/libc/gen/sleep.c \ @@ -805,6 +807,28 @@ $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_bionic_src_files include $(BUILD_STATIC_LIBRARY) +# ======================================================== +# libc_cxa.a - Things traditionally in libstdc++ +# ======================================================== + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(libc_cxa_src_files) +LOCAL_CFLAGS := $(libc_common_cflags) \ + -fvisibility=hidden \ + +LOCAL_CONLYFLAGS := $(libc_common_conlyflags) +LOCAL_CPPFLAGS := $(libc_common_cppflags) +LOCAL_C_INCLUDES := $(libc_common_c_includes) +LOCAL_MODULE := libc_cxa +# GCC refuses to hide new/delete +LOCAL_CLANG := true +LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) +LOCAL_SYSTEM_SHARED_LIBRARIES := + +include $(BUILD_STATIC_LIBRARY) + + # ======================================================== # libc_syscalls.a # ======================================================== @@ -857,6 +881,7 @@ LOCAL_CLANG := $(use_clang) LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) LOCAL_WHOLE_STATIC_LIBRARIES := \ libc_bionic \ + libc_cxa \ libc_dns \ libc_freebsd \ libc_gdtoa \ @@ -1104,6 +1129,36 @@ include $(BUILD_SHARED_LIBRARY) endif #!user +# ======================================================== +# libstdc++.so +# ======================================================== +libstdcxx_common_src_files := \ + bionic/__cxa_guard.cpp \ + bionic/__cxa_pure_virtual.cpp \ + bionic/new.cpp \ + bionic/libc_logging.cpp \ + +include $(CLEAR_VARS) +LOCAL_C_INCLUDES := $(libc_common_c_includes) +LOCAL_CFLAGS := $(libc_common_cflags) +LOCAL_SRC_FILES := $(libstdcxx_common_src_files) +LOCAL_MODULE:= libstdc++ +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk +LOCAL_SYSTEM_SHARED_LIBRARIES := libc +include $(BUILD_SHARED_LIBRARY) + +# ======================================================== +# libstdc++.a +# ======================================================== +include $(CLEAR_VARS) +LOCAL_C_INCLUDES := $(libc_common_c_includes) +LOCAL_CFLAGS := $(libc_common_cflags) +LOCAL_SRC_FILES := $(libstdcxx_common_src_files) +LOCAL_MODULE:= libstdc++ +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk +LOCAL_SYSTEM_SHARED_LIBRARIES := libc +include $(BUILD_STATIC_LIBRARY) + # ======================================================== include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/libstdc++/Android.mk b/libstdc++/Android.mk deleted file mode 100644 index ff9609aca..000000000 --- a/libstdc++/Android.mk +++ /dev/null @@ -1,15 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -include $(CLEAR_VARS) -LOCAL_SRC_FILES := src/libstdc++.cpp -LOCAL_MODULE:= libstdc++ -LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk -LOCAL_SYSTEM_SHARED_LIBRARIES := libc -include $(BUILD_SHARED_LIBRARY) - -include $(CLEAR_VARS) -LOCAL_SRC_FILES:= src/libstdc++.cpp -LOCAL_MODULE:= libstdc++ -LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk -LOCAL_SYSTEM_SHARED_LIBRARIES := libc -include $(BUILD_STATIC_LIBRARY) diff --git a/libstdc++/src/libstdc++.cpp b/libstdc++/src/libstdc++.cpp deleted file mode 100644 index 3676aa19f..000000000 --- a/libstdc++/src/libstdc++.cpp +++ /dev/null @@ -1 +0,0 @@ -extern "C" void __this_library_is_now_part_of_libc() {}