mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-04 06:15:24 +00:00
lang/rust: Disable "omit frame pointers"
Before the patch, the default behavior of the compiler was to omit frame
pointers. However, even though it looks fine for the code produced
by the compiler, the compiler itself was broken. When there was a
compilation error, rustc panics to report that error. While handling
that panic, it tries to unwind the stack but fails to do so, which
results in an abort(3).
Here is an example:
$ rustc hello.rs
error: invalid reference to argument `0` (no arguments given)
--> hello.rs:2:5
|
2 | println!("Hello {}")
| ^^^^^^^^^^^^^^^^^^^^
|
= note: this error originates in a macro outside of the current crate
error: aborting due to previous error
fatal runtime error: failed to initiate panic, error 5
Abort trap (core dumped)
The problem also exists on other systems such as OpenBSD and
i686-unknown-linux-musl. "omit frame pointers" was already disabled for
i686-unknown-linux-musl:
88a28ff602/src/librustc_back/target/i686_unknown_linux_musl.rs (L22)
The patch does the same for *-unknown-freebsd.
See the upstream bug for more informations:
https://github.com/rust-lang/rust/issues/43575
This commit is contained in:
parent
59c16c0e27
commit
c988c24319
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=455198
@ -3,7 +3,7 @@
|
||||
|
||||
PORTNAME= rust
|
||||
PORTVERSION?= 1.22.1
|
||||
PORTREVISION?= 1
|
||||
PORTREVISION?= 2
|
||||
CATEGORIES= lang
|
||||
MASTER_SITES= http://static.rust-lang.org/dist/:src \
|
||||
LOCAL/dumbbell/rust:rust_bootstrap \
|
||||
|
@ -1,12 +1,13 @@
|
||||
Return struct like OpenBSD, see src/librustc_trans/cabi_x86.rs
|
||||
|
||||
--- src/librustc_back/target/freebsd_base.rs.orig 2017-07-17 22:10:50 UTC
|
||||
--- src/librustc_back/target/freebsd_base.rs.orig 2017-11-22 21:33:00 UTC
|
||||
+++ src/librustc_back/target/freebsd_base.rs
|
||||
@@ -31,6 +31,7 @@ pub fn opts() -> TargetOptions {
|
||||
@@ -31,6 +31,8 @@ pub fn opts() -> TargetOptions {
|
||||
target_family: Some("unix".to_string()),
|
||||
linker_is_gnu: true,
|
||||
has_rpath: true,
|
||||
+ is_like_openbsd: true,
|
||||
+ eliminate_frame_pointer: false,
|
||||
pre_link_args: args,
|
||||
position_independent_executables: true,
|
||||
exe_allocation_crate: super::maybe_jemalloc(),
|
||||
relro_level: RelroLevel::Full,
|
||||
|
Loading…
Reference in New Issue
Block a user