From 17ab01b1d3e6b1906fe4758d87b26b517681201c Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Mon, 2 Mar 2020 17:57:14 -0500 Subject: [PATCH] Build libbacktrace with mmapio.c instead of read.c (except on Windows) Fixes #289 `mmap` should be available on all platforms we support (except Windows), so we can use `libbacktrace`'s more efficient mmap-based code. --- crates/backtrace-sys/build.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/backtrace-sys/build.rs b/crates/backtrace-sys/build.rs index 5b49cd4a4..564f23a91 100644 --- a/crates/backtrace-sys/build.rs +++ b/crates/backtrace-sys/build.rs @@ -31,10 +31,17 @@ fn main() { .file("src/libbacktrace/dwarf.c") .file("src/libbacktrace/fileline.c") .file("src/libbacktrace/posix.c") - .file("src/libbacktrace/read.c") .file("src/libbacktrace/sort.c") .file("src/libbacktrace/state.c"); + // `mmap` does not exist on Windows, so we use + // the less efficient `read`-based code. + if target.contains("windows") { + build.file("src/libbacktrace/read.c"); + } else { + build.file("src/libbacktrace/mmapio.c"); + } + // No need to have any symbols reexported form shared objects build.flag("-fvisibility=hidden");