std: Add Win64 support

Some extern blobs are duplicated without "stdcall" abi,
since Win64 does not use any calling convention.
(Giving any abi to them causes llvm producing wrong bytecode.)
This commit is contained in:
klutzy
2013-08-12 15:27:46 +09:00
parent 6aff4c67f6
commit 05b6a2f59c
4 changed files with 162 additions and 3 deletions

View File

@@ -252,6 +252,7 @@ mod dl {
FreeLibrary(handle); ()
}
#[cfg(target_arch = "x86")]
#[link_name = "kernel32"]
extern "stdcall" {
fn SetLastError(error: u32);
@@ -261,4 +262,15 @@ mod dl {
fn GetProcAddress(handle: *libc::c_void, name: *libc::c_char) -> *libc::c_void;
fn FreeLibrary(handle: *libc::c_void);
}
#[cfg(target_arch = "x86_64")]
#[link_name = "kernel32"]
extern {
fn SetLastError(error: u32);
fn LoadLibraryW(name: *u16) -> *libc::c_void;
fn GetModuleHandleExW(dwFlags: libc::DWORD, name: *u16,
handle: **libc::c_void) -> *libc::c_void;
fn GetProcAddress(handle: *libc::c_void, name: *libc::c_char) -> *libc::c_void;
fn FreeLibrary(handle: *libc::c_void);
}
}