Skip to content

Commit 64a18a8

Browse files
committed
Use --eh-frame-hdr on linux-musl target & ld.lld linker flavour
The --eh-frame-hdr is necessary for unwinding but not enabled by default when using ld.lld linker flavour. Enable it to match existing behaviour for gcc linker flavour.
1 parent e55d3f9 commit 64a18a8

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/librustc_target/spec/linux_musl_base.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::crt_objects::{self, CrtObjectsFallback};
2-
use crate::spec::{LinkerFlavor, TargetOptions};
2+
use crate::spec::{LinkerFlavor, LldFlavor, TargetOptions};
33

44
pub fn opts() -> TargetOptions {
55
let mut base = super::linux_base::opts();
@@ -8,7 +8,11 @@ pub fn opts() -> TargetOptions {
88
// `GNU_EH_FRAME` program header to executables generated, which is required
99
// when unwinding to locate the unwinding information. I'm not sure why this
1010
// argument is *not* necessary for normal builds, but it can't hurt!
11-
base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,--eh-frame-hdr".to_string());
11+
base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-Wl,--eh-frame-hdr".to_string());
12+
base.pre_link_args
13+
.entry(LinkerFlavor::Lld(LldFlavor::Ld))
14+
.or_default()
15+
.push("--eh-frame-hdr".to_string());
1216

1317
base.pre_link_objects_fallback = crt_objects::pre_musl_fallback();
1418
base.post_link_objects_fallback = crt_objects::post_musl_fallback();

0 commit comments

Comments
 (0)