aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/android/include/link.h26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/common/android/include/link.h b/src/common/android/include/link.h
index e7ff8e2d..75e3bb2c 100644
--- a/src/common/android/include/link.h
+++ b/src/common/android/include/link.h
@@ -30,15 +30,30 @@
#ifndef GOOGLE_BREAKPAD_ANDROID_INCLUDE_LINK_H
#define GOOGLE_BREAKPAD_ANDROID_INCLUDE_LINK_H
-/* Android doesn't provide all the data-structures required in its <link.h>.
- Provide custom version here. */
-#include_next <link.h>
-
// TODO(rmcilroy): Remove this file once the ndk is updated for other
// architectures - crbug.com/358831
+
+// Android doesn't provide all the data-structures required in
+// its <link.h> before release 21. Provide custom version here and
+// rename Bionic-provided structures to avoid conflicts.
+
+#if !defined(__aarch64__) && !defined(__x86_64__) && \
+ !(defined(__mips__) && _MIPS_SIM == _ABI64)
+
+#define r_debug __bionic_r_debug
+#define link_map __bionic_link_map
+
+#endif // !defined(__aarch64__) && !defined(__x86_64__) && \
+ !(defined(__mips__) && _MIPS_SIM == _ABI64)
+
+#include_next <link.h>
+
#if !defined(__aarch64__) && !defined(__x86_64__) && \
!(defined(__mips__) && _MIPS_SIM == _ABI64)
+#undef r_debug
+#undef link_map
+
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
@@ -66,6 +81,7 @@ struct link_map {
} // extern "C"
#endif // __cplusplus
-#endif // !defined(__aarch64__) && !defined(__x86_64__)
+#endif // !defined(__aarch64__) && !defined(__x86_64__) && \
+ !(defined(__mips__) && _MIPS_SIM == _ABI64)
#endif /* GOOGLE_BREAKPAD_ANDROID_INCLUDE_LINK_H */