mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-03 04:04:06 +00:00
std: Fix backtraces on arm linux
On android, libgcc is missing the _Unwind_GetIP symbol because it's defined as a macro. This is the same case for arm linux, so this commit adds the necessary cfgs in place to use the "expanded macro" in rust for arm linux.
This commit is contained in:
parent
770b6e2fc2
commit
8e5ca4b793
@ -98,9 +98,18 @@ extern "C" {
|
||||
pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
|
||||
trace_argument: *libc::c_void)
|
||||
-> _Unwind_Reason_Code;
|
||||
#[cfg(not(target_os = "android"))]
|
||||
#[cfg(stage0, not(target_os = "android"))]
|
||||
pub fn _Unwind_GetIP(ctx: *_Unwind_Context) -> libc::uintptr_t;
|
||||
#[cfg(not(target_os = "android"))]
|
||||
#[cfg(stage0, not(target_os = "android"))]
|
||||
pub fn _Unwind_FindEnclosingFunction(pc: *libc::c_void) -> *libc::c_void;
|
||||
|
||||
#[cfg(not(stage0),
|
||||
not(target_os = "android"),
|
||||
not(target_os = "linux", target_arch = "arm"))]
|
||||
pub fn _Unwind_GetIP(ctx: *_Unwind_Context) -> libc::uintptr_t;
|
||||
#[cfg(not(stage0),
|
||||
not(target_os = "android"),
|
||||
not(target_os = "linux", target_arch = "arm"))]
|
||||
pub fn _Unwind_FindEnclosingFunction(pc: *libc::c_void) -> *libc::c_void;
|
||||
}
|
||||
|
||||
@ -108,6 +117,7 @@ extern "C" {
|
||||
// of the macro. This is all copy/pasted directly from the header file with the
|
||||
// definition of _Unwind_GetIP.
|
||||
#[cfg(target_os = "android")]
|
||||
#[cfg(target_os = "linux", target_os = "arm")]
|
||||
pub unsafe fn _Unwind_GetIP(ctx: *_Unwind_Context) -> libc::uintptr_t {
|
||||
#[repr(C)]
|
||||
enum _Unwind_VRS_Result {
|
||||
@ -151,6 +161,7 @@ pub unsafe fn _Unwind_GetIP(ctx: *_Unwind_Context) -> libc::uintptr_t {
|
||||
|
||||
// This function also doesn't exist on android, so make it a no-op
|
||||
#[cfg(target_os = "android")]
|
||||
#[cfg(target_os = "linux", target_os = "arm")]
|
||||
pub unsafe fn _Unwind_FindEnclosingFunction(pc: *libc::c_void) -> *libc::c_void{
|
||||
pc
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user