1
1
#![ feature( naked_functions, asm_const, linkage) ]
2
2
#![ crate_type = "dylib" ]
3
3
4
- use std:: arch:: asm ;
4
+ use std:: arch:: naked_asm ;
5
5
6
6
pub trait TraitWithConst {
7
7
const COUNT : u32 ;
@@ -28,7 +28,7 @@ extern "C" fn private_vanilla() -> u32 {
28
28
29
29
#[ naked]
30
30
extern "C" fn private_naked ( ) -> u32 {
31
- unsafe { asm ! ( "mov rax, 42" , "ret" , options ( noreturn ) ) }
31
+ unsafe { naked_asm ! ( "mov rax, 42" , "ret" ) }
32
32
}
33
33
34
34
#[ no_mangle]
@@ -39,7 +39,7 @@ pub extern "C" fn public_vanilla() -> u32 {
39
39
#[ naked]
40
40
#[ no_mangle]
41
41
pub extern "C" fn public_naked ( ) -> u32 {
42
- unsafe { asm ! ( "mov rax, 42" , "ret" , options ( noreturn ) ) }
42
+ unsafe { naked_asm ! ( "mov rax, 42" , "ret" ) }
43
43
}
44
44
45
45
pub extern "C" fn public_vanilla_generic < T : TraitWithConst > ( ) -> u32 {
@@ -48,7 +48,7 @@ pub extern "C" fn public_vanilla_generic<T: TraitWithConst>() -> u32 {
48
48
49
49
#[ naked]
50
50
pub extern "C" fn public_naked_generic < T : TraitWithConst > ( ) -> u32 {
51
- unsafe { asm ! ( "mov rax, {}" , "ret" , const T :: COUNT , options ( noreturn ) ) }
51
+ unsafe { naked_asm ! ( "mov rax, {}" , "ret" , const T :: COUNT ) }
52
52
}
53
53
54
54
#[ linkage = "external" ]
@@ -59,7 +59,7 @@ extern "C" fn vanilla_external_linkage() -> u32 {
59
59
#[ naked]
60
60
#[ linkage = "external" ]
61
61
extern "C" fn naked_external_linkage ( ) -> u32 {
62
- unsafe { asm ! ( "mov rax, 42" , "ret" , options ( noreturn ) ) }
62
+ unsafe { naked_asm ! ( "mov rax, 42" , "ret" ) }
63
63
}
64
64
65
65
#[ cfg( not( windows) ) ]
@@ -72,7 +72,7 @@ extern "C" fn vanilla_weak_linkage() -> u32 {
72
72
#[ cfg( not( windows) ) ]
73
73
#[ linkage = "weak" ]
74
74
extern "C" fn naked_weak_linkage ( ) -> u32 {
75
- unsafe { asm ! ( "mov rax, 42" , "ret" , options( noreturn) ) }
75
+ unsafe { naked_asm ! ( "mov rax, 42" , "ret" , options( noreturn) ) }
76
76
}
77
77
78
78
// functions that are declared in an `extern "C"` block are currently not exported
0 commit comments