mirror of
https://github.com/chromium/crashpad.git
synced 2024-12-27 07:14:10 +08:00
android: Support builds with NDK API versions older than 21 (compat)
The new Linux ProcessInfo implementation uses two macros not readily available in NDK API versions older than 21 (Android 5.0.0): NT_PRSTATUS and PR_GETREGSET. Chrome uses API 21 for 64-bit builds, but uses API 16 for 32-bit builds. NT_PRSTATUS is normally defined by <elf.h> or by <linux/elf.h>, included by <elf.h>. Although the definition in <linux/elf.h> is available in older NDK API versions, this internal header does not mix well with <elf.h> unless <elf.h> contemplates this combination. As of NDK API 21, <elf.h> actually delegates most of its work to <linux/elf.h>. PR_GETREGSET is not available in the NDK at all until API 21. Its definition is in <linux/ptrace.h>. Most user code should #include <sys/ptrace.h> instead, which includes <linux/ptrace.h>. Bug: crashpad:30 Test: crashpad_util_test ProcessInfo.* Change-Id: I4d07a9964db4665a49bde490e905ae9126880bc5 Reviewed-on: https://chromium-review.googlesource.com/455659 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
This commit is contained in:
parent
5938c6e993
commit
82009cd14d
25
compat/android/elf.h
Normal file
25
compat/android/elf.h
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright 2017 The Crashpad Authors. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef CRASHPAD_COMPAT_ANDROID_ELF_H_
|
||||
#define CRASHPAD_COMPAT_ANDROID_ELF_H_
|
||||
|
||||
#include_next <elf.h>
|
||||
|
||||
// Android 5.0.0 (API 21) NDK
|
||||
#if !defined(NT_PRSTATUS)
|
||||
#define NT_PRSTATUS 1
|
||||
#endif
|
||||
|
||||
#endif // CRASHPAD_COMPAT_ANDROID_ELF_H_
|
25
compat/android/linux/ptrace.h
Normal file
25
compat/android/linux/ptrace.h
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright 2017 The Crashpad Authors. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef CRASHPAD_COMPAT_ANDROID_LINUX_PTRACE_H_
|
||||
#define CRASHPAD_COMPAT_ANDROID_LINUX_PTRACE_H_
|
||||
|
||||
#include_next <linux/ptrace.h>
|
||||
|
||||
// Android 5.0.0 (API 21) NDK
|
||||
#if !defined(PTRACE_GETREGSET)
|
||||
#define PTRACE_GETREGSET 0x4204
|
||||
#endif
|
||||
|
||||
#endif // CRASHPAD_COMPAT_ANDROID_LINUX_PTRACE_H_
|
@ -83,6 +83,16 @@
|
||||
],
|
||||
},
|
||||
}],
|
||||
['OS=="android"', {
|
||||
'include_dirs': [
|
||||
'android',
|
||||
],
|
||||
'direct_dependent_settings': {
|
||||
'include_dirs': [
|
||||
'android',
|
||||
],
|
||||
},
|
||||
}],
|
||||
],
|
||||
},
|
||||
],
|
||||
|
Loading…
x
Reference in New Issue
Block a user