mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // Test that the correct module flags are emitted with different control-flow protection flags.
 | |
| 
 | |
| // revisions: undefined none branch return full
 | |
| // needs-llvm-components: x86
 | |
| // [undefined] compile-flags:
 | |
| // [none] compile-flags: -Z cf-protection=none
 | |
| // [branch] compile-flags: -Z cf-protection=branch
 | |
| // [return] compile-flags: -Z cf-protection=return
 | |
| // [full] compile-flags: -Z cf-protection=full
 | |
| // compile-flags: --target x86_64-unknown-linux-gnu
 | |
| 
 | |
| #![crate_type = "lib"]
 | |
| #![feature(no_core, lang_items)]
 | |
| #![no_core]
 | |
| 
 | |
| #[lang="sized"]
 | |
| trait Sized { }
 | |
| 
 | |
| // A basic test function.
 | |
| pub fn test() {
 | |
| }
 | |
| 
 | |
| // undefined-NOT: !"cf-protection-branch"
 | |
| // undefined-NOT: !"cf-protection-return"
 | |
| 
 | |
| // none-NOT: !"cf-protection-branch"
 | |
| // none-NOT: !"cf-protection-return"
 | |
| 
 | |
| // branch-NOT: !"cf-protection-return"
 | |
| // branch: !"cf-protection-branch", i32 1
 | |
| // branch-NOT: !"cf-protection-return"
 | |
| 
 | |
| // return-NOT: !"cf-protection-branch"
 | |
| // return: !"cf-protection-return", i32 1
 | |
| // return-NOT: !"cf-protection-branch"
 | |
| 
 | |
| // full: !"cf-protection-branch", i32 1
 | |
| // full: !"cf-protection-return", i32 1
 | 
