Bug 1428182 - 6a. Apply Breakpad upstream commit for building with NDK r16; r=ted

Apply commit afa9c52715db1e4bfaa4b01c9aec40cc249b689b from the Breakpad
upstream to support building with NDK r16.

MozReview-Commit-ID: D6xafYkjhjt

--HG--
extra : rebase_source : 92f92d04ab13ffab6e8891ca048679b6749ab1c7
This commit is contained in:
Jim Chen 2018-01-29 17:38:14 -05:00
parent dbaea867e2
commit 05a965c1a8
2 changed files with 26 additions and 40 deletions

View File

@ -34,10 +34,16 @@
Provide custom version here. */
#include_next <link.h>
// TODO(rmcilroy): Remove this file once the ndk is updated for other
// architectures - crbug.com/358831
#if !defined(__aarch64__) && !defined(__x86_64__) && \
!(defined(__mips__) && _MIPS_SIM == _ABI64)
#include <android/api-level.h>
// TODO(rmcilroy): Remove this file once the NDK API level is updated to at
// least 21 for all architectures. https://crbug.com/358831
// These structures are only present in traditional headers at API level 21 and
// above. Unified headers define these structures regardless of the chosen API
// level. __ANDROID_API_N__ is a proxy for determining whether unified headers
// are in use. Its only defined by unified headers.
#if __ANDROID_API__ < 21 && !defined(__ANDROID_API_N__)
#ifdef __cplusplus
extern "C" {
@ -68,6 +74,6 @@ struct link_map {
} // extern "C"
#endif // __cplusplus
#endif // !defined(__aarch64__) && !defined(__x86_64__)
#endif // __ANDROID_API__ < 21 && !defined(__ANDROID_API_N__)
#endif /* GOOGLE_BREAKPAD_ANDROID_INCLUDE_LINK_H */

View File

@ -34,52 +34,32 @@
// glibc) and therefore avoid doing otherwise awkward #ifdefs in the code.
// The following quirks are currently handled by this file:
// - i386: Use the Android NDK but alias user_fxsr_struct > user_fpxregs_struct.
// - aarch64:
// - NDK r10: Add missing user_regs_struct and user_fpsimd_struct structs.
// - NDK r11+: Add missing <stdint.h> include
// - Other platforms: Just use the Android NDK unchanged.
// TODO(primiano): remove these changes after Chromium has stably rolled to
// an NDK with the appropriate fixes.
#if defined(ANDROID_NDK_MAJOR_VERSION) && ANDROID_NDK_MAJOR_VERSION > 10
#ifdef __aarch64__
#include <stdint.h>
#endif // __aarch64__
#endif // defined(ANDROID_NDK_MAJOR_VERSION) && ANDROID_NDK_MAJOR_VERSION > 10
// an NDK with the appropriate fixes. https://crbug.com/358831
#include_next <sys/user.h>
#ifdef __i386__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
typedef struct user_fxsr_struct user_fpxregs_struct;
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
#endif // __i386__
#include <android/api-level.h>
#if !defined(ANDROID_NDK_MAJOR_VERSION) || ANDROID_NDK_MAJOR_VERSION == 10
#ifdef __aarch64__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
struct user_regs_struct {
__u64 regs[31];
__u64 sp;
__u64 pc;
__u64 pstate;
};
struct user_fpsimd_struct {
__uint128_t vregs[32];
__u32 fpsr;
__u32 fpcr;
};
#if defined(__i386__)
#if __ANDROID_API__ < 21 && !defined(__ANDROID_API_N__)
// user_fpxregs_struct was called user_fxsr_struct in traditional headers before
// API level 21. Unified headers call it user_fpxregs_struct regardless of the
// chosen API level. __ANDROID_API_N__ is a proxy for determining whether
// unified headers are in use. Its only defined by unified headers.
typedef struct user_fxsr_struct user_fpxregs_struct;
#endif // __ANDROID_API__ < 21 && !defined(__ANDROID_API_N__)
#endif // defined(__i386__)
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
#endif // __aarch64__
#endif // defined(ANDROID_NDK_VERSION) && ANDROID_NDK_MAJOR_VERSION == 10
#endif // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_USER_H