std: Fixed backtrace warnings and tests for non-Linux platforms.
- Fixed a couple of dead code warnings in std::sys::backtrace. - Made `backtrace-debuginfo` test a no-op on non-Linux platforms. - `backtrace-debuginfo` is no longer tested on pretty-rpass.
This commit is contained in:
parent
587f10aa36
commit
ff678ea3f4
2 changed files with 28 additions and 5 deletions
|
@ -224,7 +224,7 @@ pub fn write(w: &mut Writer) -> IoResult<()> {
|
||||||
|
|
||||||
#[cfg(any(target_os = "macos", target_os = "ios"))]
|
#[cfg(any(target_os = "macos", target_os = "ios"))]
|
||||||
fn print(w: &mut Writer, idx: int, addr: *mut libc::c_void,
|
fn print(w: &mut Writer, idx: int, addr: *mut libc::c_void,
|
||||||
symaddr: *mut libc::c_void) -> IoResult<()> {
|
_symaddr: *mut libc::c_void) -> IoResult<()> {
|
||||||
use intrinsics;
|
use intrinsics;
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
struct Dl_info {
|
struct Dl_info {
|
||||||
|
@ -450,6 +450,7 @@ fn output(w: &mut Writer, idx: int, addr: *mut libc::c_void,
|
||||||
w.write_all(&['\n' as u8])
|
w.write_all(&['\n' as u8])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
fn output_fileline(w: &mut Writer, file: &[u8], line: libc::c_int,
|
fn output_fileline(w: &mut Writer, file: &[u8], line: libc::c_int,
|
||||||
more: bool) -> IoResult<()> {
|
more: bool) -> IoResult<()> {
|
||||||
let file = str::from_utf8(file).ok().unwrap_or("<unknown>");
|
let file = str::from_utf8(file).ok().unwrap_or("<unknown>");
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
// compile-flags:-g
|
// compile-flags:-g
|
||||||
|
// ignore-pretty as this critically relies on line numbers
|
||||||
|
|
||||||
use std::old_io::stderr;
|
use std::old_io::stderr;
|
||||||
use std::env;
|
use std::env;
|
||||||
|
@ -19,14 +20,35 @@ macro_rules! pos {
|
||||||
() => ((file!(), line!()))
|
() => ((file!(), line!()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(unix,
|
||||||
|
not(target_os = "macos"),
|
||||||
|
not(target_os = "ios"),
|
||||||
|
not(target_os = "android"),
|
||||||
|
not(all(target_os = "linux", target_arch = "arm"))))]
|
||||||
|
macro_rules! dump_and_die {
|
||||||
|
($($pos:expr),*) => ({
|
||||||
|
// FIXME(#18285): we cannot include the current position because
|
||||||
|
// the macro span takes over the last frame's file/line.
|
||||||
|
dump_filelines(&[$($pos),*]);
|
||||||
|
panic!();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// this does not work on Windows, Android, OSX or iOS
|
||||||
|
#[cfg(any(not(unix),
|
||||||
|
target_os = "macos",
|
||||||
|
target_os = "ios",
|
||||||
|
target_os = "android",
|
||||||
|
all(target_os = "linux", target_arch = "arm")))]
|
||||||
|
macro_rules! dump_and_die {
|
||||||
|
($($pos:expr),*) => ({ let _ = [$($pos),*]; })
|
||||||
|
}
|
||||||
|
|
||||||
// we can't use a function as it will alter the backtrace
|
// we can't use a function as it will alter the backtrace
|
||||||
macro_rules! check {
|
macro_rules! check {
|
||||||
($counter:expr; $($pos:expr),*) => ({
|
($counter:expr; $($pos:expr),*) => ({
|
||||||
if *$counter == 0 {
|
if *$counter == 0 {
|
||||||
// FIXME(#18285): we cannot include the current position because
|
dump_and_die!($($pos),*)
|
||||||
// the macro span takes over the last frame's file/line.
|
|
||||||
dump_filelines(&[$($pos),*]);
|
|
||||||
panic!();
|
|
||||||
} else {
|
} else {
|
||||||
*$counter -= 1;
|
*$counter -= 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue