diff options
Diffstat (limited to 'debian/patches/vendor/u-hurd-backtrace.patch')
-rw-r--r-- | debian/patches/vendor/u-hurd-backtrace.patch | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/debian/patches/vendor/u-hurd-backtrace.patch b/debian/patches/vendor/u-hurd-backtrace.patch new file mode 100644 index 000000000..b4af54f87 --- /dev/null +++ b/debian/patches/vendor/u-hurd-backtrace.patch @@ -0,0 +1,77 @@ +From: Samuel Thibault <samuel.thibault@ens-lyon.org> +Date: Sat, 7 Oct 2023 01:45:09 +0200 +Subject: u-hurd-backtrace + +Forwarded: https://github.com/rust-lang/backtrace-rs/pull/567 + +Subject: Add GNU/Hurd support (rust-lang/backtrace-rs#567) +--- + vendor/backtrace/src/symbolize/gimli.rs | 2 ++ + vendor/backtrace/src/symbolize/gimli/elf.rs | 2 +- + .../src/symbolize/gimli/libs_dl_iterate_phdr.rs | 20 ++++++++++++-------- + 3 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/vendor/backtrace/src/symbolize/gimli.rs b/vendor/backtrace/src/symbolize/gimli.rs +index 7f1c6a5..6a9402c 100644 +--- a/vendor/backtrace/src/symbolize/gimli.rs ++++ b/vendor/backtrace/src/symbolize/gimli.rs +@@ -35,6 +35,7 @@ cfg_if::cfg_if! { + target_os = "freebsd", + target_os = "fuchsia", + target_os = "haiku", ++ target_os = "hurd", + target_os = "ios", + target_os = "linux", + target_os = "macos", +@@ -218,6 +219,7 @@ cfg_if::cfg_if! { + target_os = "linux", + target_os = "fuchsia", + target_os = "freebsd", ++ target_os = "hurd", + target_os = "openbsd", + target_os = "netbsd", + all(target_os = "android", feature = "dl_iterate_phdr"), +diff --git a/vendor/backtrace/src/symbolize/gimli/elf.rs b/vendor/backtrace/src/symbolize/gimli/elf.rs +index b0eec07..906a300 100644 +--- a/vendor/backtrace/src/symbolize/gimli/elf.rs ++++ b/vendor/backtrace/src/symbolize/gimli/elf.rs +@@ -308,7 +308,7 @@ const DEBUG_PATH: &[u8] = b"/usr/lib/debug"; + + fn debug_path_exists() -> bool { + cfg_if::cfg_if! { +- if #[cfg(any(target_os = "freebsd", target_os = "linux"))] { ++ if #[cfg(any(target_os = "freebsd", target_os = "hurd", target_os = "linux"))] { + use core::sync::atomic::{AtomicU8, Ordering}; + static DEBUG_PATH_EXISTS: AtomicU8 = AtomicU8::new(0); + +diff --git a/vendor/backtrace/src/symbolize/gimli/libs_dl_iterate_phdr.rs b/vendor/backtrace/src/symbolize/gimli/libs_dl_iterate_phdr.rs +index 9f0304c..518512f 100644 +--- a/vendor/backtrace/src/symbolize/gimli/libs_dl_iterate_phdr.rs ++++ b/vendor/backtrace/src/symbolize/gimli/libs_dl_iterate_phdr.rs +@@ -18,14 +18,18 @@ pub(super) fn native_libraries() -> Vec<Library> { + } + + fn infer_current_exe(base_addr: usize) -> OsString { +- if let Ok(entries) = super::parse_running_mmaps::parse_maps() { +- let opt_path = entries +- .iter() +- .find(|e| e.ip_matches(base_addr) && e.pathname().len() > 0) +- .map(|e| e.pathname()) +- .cloned(); +- if let Some(path) = opt_path { +- return path; ++ cfg_if::cfg_if! { ++ if #[cfg(not(target_os = "hurd"))] { ++ if let Ok(entries) = super::parse_running_mmaps::parse_maps() { ++ let opt_path = entries ++ .iter() ++ .find(|e| e.ip_matches(base_addr) && e.pathname().len() > 0) ++ .map(|e| e.pathname()) ++ .cloned(); ++ if let Some(path) = opt_path { ++ return path; ++ } ++ } + } + } + env::current_exe().map(|e| e.into()).unwrap_or_default() |