diff --git a/src/libstd/sys/unix/backtrace.rs b/src/libstd/sys/unix/backtrace.rs index 8bc3ffd6ed1..09630f8f584 100644 --- a/src/libstd/sys/unix/backtrace.rs +++ b/src/libstd/sys/unix/backtrace.rs @@ -224,7 +224,7 @@ pub fn write(w: &mut Writer) -> IoResult<()> { #[cfg(any(target_os = "macos", target_os = "ios"))] 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; #[repr(C)] 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]) } +#[allow(dead_code)] fn output_fileline(w: &mut Writer, file: &[u8], line: libc::c_int, more: bool) -> IoResult<()> { let file = str::from_utf8(file).ok().unwrap_or(""); diff --git a/src/test/run-pass/backtrace-debuginfo.rs b/src/test/run-pass/backtrace-debuginfo.rs index a6be6f985fc..a2a63d44a78 100644 --- a/src/test/run-pass/backtrace-debuginfo.rs +++ b/src/test/run-pass/backtrace-debuginfo.rs @@ -9,6 +9,7 @@ // except according to those terms. // compile-flags:-g +// ignore-pretty as this critically relies on line numbers use std::old_io::stderr; use std::env; @@ -19,14 +20,35 @@ macro_rules! pos { () => ((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 macro_rules! check { ($counter:expr; $($pos:expr),*) => ({ if *$counter == 0 { - // FIXME(#18285): we cannot include the current position because - // the macro span takes over the last frame's file/line. - dump_filelines(&[$($pos),*]); - panic!(); + dump_and_die!($($pos),*) } else { *$counter -= 1; }