aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@mozilla.com>2016-08-03 15:28:43 +0100
committerRoss McIlroy <rmcilroy@chromium.org>2016-08-03 15:28:43 +0100
commit0fc6d0c8dfbb6e4226fd79c622b701a62c901f14 (patch)
tree8d8cedd618455b249eb1e490e31c5771e18fa4a2 /src/common
parentSwitch to Gerrit for code reviews (diff)
downloadbreakpad-0fc6d0c8dfbb6e4226fd79c622b701a62c901f14.tar.xz
Don't define |r_debug| and |link_map| on Android releases 21 and later
NDKs for Android 21 and later have the data structures |r_debug| and |link_map| defined in their header files. Defining them multiple times generates a compiler error. This patch protects both data structures from definition on Android 21 and later. BUG=629088 R=rmcilroy@chromium.org Review URL: https://codereview.chromium.org/2156173002 . Patch from Thomas Zimmermann <tzimmermann@mozilla.com>. Committed: https://chromium.googlesource.com/breakpad/breakpad/+/0ebdc4a10a506e2a4a3a039c479b40219a84b760
Diffstat (limited to 'src/common')
-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 */