From 85a121323285c9c3b5852c64e9c4ff1550142967 Mon Sep 17 00:00:00 2001 From: Ryan Prichard Date: Mon, 22 Mar 2021 13:49:41 -0700 Subject: [PATCH] Switch platform-NDK unwinder to LLVM libunwind.a prebuilt Link against the libunwind.a shipped with the NDK so it matches what's linked into the NDK's libc++_shared.so. For arm32, binary.mk and cxx_stl_setup.mk had been adding two different versions of the LLVM unwinder to the same linker command-line. Remove the duplicate one from cxx_stl_setup.mk. -Wl,--exclude-libs is now unnecessary because the symbols are marked hidden in the archive itself. Bug: http://b/153025717 Test: device boots, manually inspect some linker command lines Change-Id: Ie7182bd565014348b16448976dc6587d2885ba99 --- core/binary.mk | 5 +---- core/cxx_stl_setup.mk | 10 +--------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/core/binary.mk b/core/binary.mk index 2c20eed606..0d7206f1a4 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -266,10 +266,7 @@ ifneq ($(LOCAL_SDK_VERSION),) endif endif - ifneq (,$(filter armeabi armeabi-v7a,$(my_cpu_variant))) - my_ndk_stl_static_lib += $(my_libcxx_libdir)/libunwind.a - endif - + my_ndk_stl_static_lib += $(my_libcxx_libdir)/libunwind.a my_ldlibs += -ldl else # LOCAL_NDK_STL_VARIANT must be none # Do nothing. diff --git a/core/cxx_stl_setup.mk b/core/cxx_stl_setup.mk index f71ef72f50..0d557c7d36 100644 --- a/core/cxx_stl_setup.mk +++ b/core/cxx_stl_setup.mk @@ -82,15 +82,7 @@ ifneq ($(filter $(my_cxx_stl),libc++ libc++_static),) endif endif else ifeq ($(my_cxx_stl),ndk) - # Using an NDK STL. Handled in binary.mk, except for the unwinder. - # TODO: Switch the NDK over to the LLVM unwinder for non-arm32 architectures. - ifeq (arm,$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) - my_static_libraries += libunwind_llvm - my_ldflags += -Wl,--exclude-libs,libunwind_llvm.a - else - my_static_libraries += libgcc_stripped - my_ldflags += -Wl,--exclude-libs,libgcc_stripped.a - endif + # Using an NDK STL. Handled in binary.mk. else ifeq ($(my_cxx_stl),libstdc++) $(error $(LOCAL_PATH): $(LOCAL_MODULE): libstdc++ is not supported) else ifeq ($(my_cxx_stl),none)