@@ -36,18 +36,14 @@ use core::panic::PanicPayload;
36
36
cfg_if:: cfg_if! {
37
37
if #[ cfg( target_os = "emscripten" ) ] {
38
38
#[ path = "emcc.rs" ]
39
- mod real_imp ;
39
+ mod imp ;
40
40
} else if #[ cfg( target_os = "hermit" ) ] {
41
41
#[ path = "hermit.rs" ]
42
- mod real_imp ;
42
+ mod imp ;
43
43
} else if #[ cfg( target_os = "l4re" ) ] {
44
44
// L4Re is unix family but does not yet support unwinding.
45
45
#[ path = "dummy.rs" ]
46
- mod real_imp;
47
- } else if #[ cfg( all( target_env = "msvc" , not( target_arch = "arm" ) ) ) ] {
48
- // LLVM does not support unwinding on 32 bit ARM msvc (thumbv7a-pc-windows-msvc)
49
- #[ path = "seh.rs" ]
50
- mod real_imp;
46
+ mod imp;
51
47
} else if #[ cfg( any(
52
48
all( target_family = "windows" , target_env = "gnu" ) ,
53
49
target_os = "psp" ,
@@ -58,7 +54,16 @@ cfg_if::cfg_if! {
58
54
target_family = "wasm" ,
59
55
) ) ] {
60
56
#[ path = "gcc.rs" ]
61
- mod real_imp;
57
+ mod imp;
58
+ } else if #[ cfg( miri) ] {
59
+ // Use the Miri runtime on Windows as miri doesn't support funclet based unwinding,
60
+ // only landingpad based unwinding. Also use the Miri runtime on unsupported platforms.
61
+ #[ path = "miri.rs" ]
62
+ mod imp;
63
+ } else if #[ cfg( all( target_env = "msvc" , not( target_arch = "arm" ) ) ) ] {
64
+ // LLVM does not support unwinding on 32 bit ARM msvc (thumbv7a-pc-windows-msvc)
65
+ #[ path = "seh.rs" ]
66
+ mod imp;
62
67
} else {
63
68
// Targets that don't support unwinding.
64
69
// - os=none ("bare metal" targets)
@@ -67,20 +72,7 @@ cfg_if::cfg_if! {
67
72
// - nvptx64-nvidia-cuda
68
73
// - arch=avr
69
74
#[ path = "dummy.rs" ]
70
- mod real_imp;
71
- }
72
- }
73
-
74
- cfg_if:: cfg_if! {
75
- if #[ cfg( miri) ] {
76
- // Use the Miri runtime.
77
- // We still need to also load the normal runtime above, as rustc expects certain lang
78
- // items from there to be defined.
79
- #[ path = "miri.rs" ]
80
75
mod imp;
81
- } else {
82
- // Use the real runtime.
83
- use real_imp as imp;
84
76
}
85
77
}
86
78
0 commit comments