From 22bb29c2b807180ed0522d9c930e14c327582571 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sat, 6 Oct 2018 04:17:14 +0000 Subject: [PATCH 29/29] Work around libbacktrace built with -fstack-protector On 32-bit x86 and ppc, gcc generates calls to __stack_chk_fail_local, which must be a hidden function in every DSO. gcc provides the implementation in libssp_nonshared. libbacktrace is built in hosted mode, where Adelie's compiler enables -fstack-protector by default. However, rustc passes -nodefaultlibs, inhibiting gcc from linking libssp_nonshared. --- src/libpanic_unwind/Cargo.toml | 1 + src/libpanic_unwind/build.rs | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 src/libpanic_unwind/build.rs diff --git a/src/libpanic_unwind/Cargo.toml b/src/libpanic_unwind/Cargo.toml index 74aaa4d5ae..c1b66aeefe 100644 --- a/src/libpanic_unwind/Cargo.toml +++ b/src/libpanic_unwind/Cargo.toml @@ -1,5 +1,6 @@ [package] authors = ["The Rust Project Developers"] +build = "build.rs" name = "panic_unwind" version = "0.0.0" diff --git a/src/libpanic_unwind/build.rs b/src/libpanic_unwind/build.rs new file mode 100644 index 0000000000..0d9a14b64c --- /dev/null +++ b/src/libpanic_unwind/build.rs @@ -0,0 +1,10 @@ +use std::env; + +fn main() { + let target = env::var("TARGET").unwrap(); + match target.as_ref() { + "i586-foxkit-linux-musl" => println!("cargo:rustc-link-lib=ssp_nonshared"), + "powerpc-foxkit-linux-musl" => println!("cargo:rustc-link-lib=ssp_nonshared"), + _ => {}, + }; +} -- 2.18.0