mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-12 20:16:49 +00:00
work around bug when calling c-stack-cdecl fns from outside crate
In the main test, I call the wrapper instead of the native fn, as intended. I also added an xfail-test that exercises the broken code path. Will file a bug. Description of the broken code path: The code path is that when we look up the external identifier we go through trans_external_path() -> type_of_ty_param_kinds_and_ty() -> type_of_fn_from_ty() -> type_of_fn(), and type_of_fn() adds a lot of external parameters. Problem is, I guess, that we don't pass the native ABI (or even the fact that it's a native function!), just the types and kinds of the parameters.
This commit is contained in:
parent
02d7a1e781
commit
fb48817ade
11
src/test/run-pass/invoke-external-native.rs
Normal file
11
src/test/run-pass/invoke-external-native.rs
Normal file
@ -0,0 +1,11 @@
|
||||
// xfail-test
|
||||
|
||||
import std::sys;
|
||||
|
||||
// The purpose of this test is to check that we can
|
||||
// successfully (and safely) invoke external, c-stack-cdecl
|
||||
// functions from outside the crate.
|
||||
|
||||
fn main() {
|
||||
let foo = sys::rustrt::last_os_error();
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
import std::sys;
|
||||
|
||||
#[test]
|
||||
fn last_os_error() unsafe { log sys::rustrt::last_os_error(); }
|
||||
fn last_os_error() {
|
||||
log sys::last_os_error();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user