[libunwind] Don't use dl_iterate_phdr if __ANDROID_API__ < 21
Summary:
On ARM, dl_iterate_phdr is only implemented in the Android NDK version 21 or later:
https://android.googlesource.com/platform/prebuilts/ndk/+/dev/platform/sysroot/usr/include/link.h#55
Reviewers: thakis, danalbert
Reviewed By: danalbert
Subscribers: dtzWill, aemerson, srhines, kristof.beyls
Differential Revision: https://reviews.llvm.org/D39468
llvm-svn: 317125
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 9288938561af7cb9ad18df553728ee01d31d2e37
diff --git a/src/AddressSpace.hpp b/src/AddressSpace.hpp
index f7cb767..3242840 100644
--- a/src/AddressSpace.hpp
+++ b/src/AddressSpace.hpp
@@ -393,6 +393,14 @@
}
}
return false;
+#elif defined(_LIBUNWIND_ARM_EHABI) && defined(__BIONIC__) && \
+ (__ANDROID_API__ < 21)
+ int length = 0;
+ info.arm_section =
+ (uintptr_t)dl_unwind_find_exidx((_Unwind_Ptr)targetAddr, &length);
+ info.arm_section_length = (uintptr_t)length;
+ if (info.arm_section && info.arm_section_length)
+ return true;
#elif defined(_LIBUNWIND_ARM_EHABI) || defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND)
struct dl_iterate_cb_data {
LocalAddressSpace *addressSpace;