Merge commit '69b3f5a426
' into sync_cg_clif-2024-08-09
This commit is contained in:
commit
af7ea3135d
29 changed files with 399 additions and 851 deletions
31
compiler/rustc_codegen_cranelift/example/raw-dylib.rs
Normal file
31
compiler/rustc_codegen_cranelift/example/raw-dylib.rs
Normal file
|
@ -0,0 +1,31 @@
|
|||
// Tests the raw-dylib feature for Windows.
|
||||
// https://doc.rust-lang.org/reference/items/external-blocks.html#the-link-attribute
|
||||
|
||||
fn main() {
|
||||
#[cfg(windows)]
|
||||
{
|
||||
#[link(name = "kernel32", kind = "raw-dylib")]
|
||||
extern "C" {
|
||||
fn GetModuleFileNameA(
|
||||
module: *mut std::ffi::c_void,
|
||||
filename: *mut u8,
|
||||
size: u32,
|
||||
) -> u32;
|
||||
}
|
||||
|
||||
// Get the filename of the current executable....
|
||||
let mut buffer = [0u8; 1024];
|
||||
let size = unsafe {
|
||||
GetModuleFileNameA(core::ptr::null_mut(), buffer.as_mut_ptr(), buffer.len() as u32)
|
||||
};
|
||||
if size == 0 {
|
||||
eprintln!("failed to get module file name: {}", std::io::Error::last_os_error());
|
||||
return;
|
||||
} else {
|
||||
// ...and make sure that it matches the test name.
|
||||
let filename =
|
||||
std::ffi::CStr::from_bytes_with_nul(&buffer[..size as usize + 1]).unwrap();
|
||||
assert!(filename.to_str().unwrap().ends_with("raw-dylib.exe"));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue