88f29aab27
This patch changes how to specify ABI and link name of a native module. Before: native "cdecl" mod llvm = "rustllvm" {...} After: #[abi = "cdecl"] #[link_name = "rustllvm"] native mod llvm {...} The old optional syntax for ABI and link name is no longer supported. Fixes issue #547
28 lines
659 B
Rust
28 lines
659 B
Rust
type HANDLE = u32;
|
|
type DWORD = u32;
|
|
type SIZE_T = u32;
|
|
type LPVOID = uint;
|
|
type BOOL = u8;
|
|
|
|
#[cfg(target_os = "win32")]
|
|
#[abi = "stdcall"]
|
|
native mod kernel32 {
|
|
fn GetProcessHeap() -> HANDLE;
|
|
fn HeapAlloc(hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T) -> LPVOID;
|
|
fn HeapFree(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID) -> BOOL;
|
|
}
|
|
|
|
|
|
#[cfg(target_os = "win32")]
|
|
fn main() {
|
|
let heap = kernel32::GetProcessHeap();
|
|
let mem = kernel32::HeapAlloc(heap, 0u32, 100u32);
|
|
assert mem != 0u;
|
|
let res = kernel32::HeapFree(heap, 0u32, mem);
|
|
assert res != 0u8;
|
|
}
|
|
|
|
#[cfg(target_os = "macos")]
|
|
#[cfg(target_os = "linux")]
|
|
fn main() { }
|