Make more code work with no_std. (#407)

* Make more code work with no_std.

no_std support is still incomplete, but this patch takes care of the
bulk of the straightforward parts.
This commit is contained in:
Dan Gohman
2019-10-08 16:53:32 -07:00
committed by GitHub
parent c0b37bb713
commit 8e1b44b29c
100 changed files with 380 additions and 270 deletions

View File

@@ -2,17 +2,17 @@ use crate::host::{
argv_environ_init, argv_environ_values, fd_prestats, fd_prestats_init, fd_prestats_insert,
fd_table, fd_table_init, fd_table_insert_existing,
};
use alloc::rc::Rc;
use core::cell::RefCell;
use cranelift_codegen::ir::types;
use cranelift_codegen::{ir, isa};
use cranelift_entity::PrimaryMap;
use cranelift_wasm::DefinedFuncIndex;
use std::cell::RefCell;
use std::collections::HashMap;
use std::ffi::CString;
use std::fs::File;
use std::mem;
use std::os::unix::io::AsRawFd;
use std::rc::Rc;
use syscalls;
use target_lexicon::HOST;
use wasmtime_environ::{translate_signature, Export, Module};

View File

@@ -1,8 +1,8 @@
use crate::host::{argv_environ_values, fd_prestats, fd_table};
use crate::instantiate::WASIState;
use core::convert::TryFrom;
use cranelift_codegen::ir::types::{Type, I32, I64};
use host;
use std::convert::TryFrom;
use std::{mem, ptr, slice, str};
use translate::*;
use wasm32;

View File

@@ -1,5 +1,5 @@
use core::convert::TryFrom;
use host;
use std::convert::TryFrom;
use std::mem::{align_of, size_of, zeroed};
use std::slice;
use wasm32;

View File

@@ -107,7 +107,7 @@ fn bindgen_test_layout_fsid_t() {
concat!("Alignment of ", stringify!(fsid_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<fsid_t>())).__val as *const _ as usize },
unsafe { &(*(::core::ptr::null::<fsid_t>())).__val as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -166,7 +166,7 @@ fn bindgen_test_layout_wasi_dirent_t() {
concat!("Size of: ", stringify!(__wasi_dirent_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_dirent_t>())).d_next as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_dirent_t>())).d_next as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -176,7 +176,7 @@ fn bindgen_test_layout_wasi_dirent_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_dirent_t>())).d_ino as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_dirent_t>())).d_ino as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
@@ -186,7 +186,7 @@ fn bindgen_test_layout_wasi_dirent_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_dirent_t>())).d_namlen as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_dirent_t>())).d_namlen as *const _ as usize },
16usize,
concat!(
"Offset of field: ",
@@ -196,7 +196,7 @@ fn bindgen_test_layout_wasi_dirent_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_dirent_t>())).d_type as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_dirent_t>())).d_type as *const _ as usize },
20usize,
concat!(
"Offset of field: ",
@@ -248,7 +248,7 @@ fn bindgen_test_layout___wasi_event_t___wasi_event_u___wasi_event_u_fd_readwrite
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_event_t___wasi_event_u___wasi_event_u_fd_readwrite_t>()))
&(*(::core::ptr::null::<__wasi_event_t___wasi_event_u___wasi_event_u_fd_readwrite_t>()))
.nbytes as *const _ as usize
},
0usize,
@@ -261,7 +261,7 @@ fn bindgen_test_layout___wasi_event_t___wasi_event_u___wasi_event_u_fd_readwrite
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_event_t___wasi_event_u___wasi_event_u_fd_readwrite_t>()))
&(*(::core::ptr::null::<__wasi_event_t___wasi_event_u___wasi_event_u_fd_readwrite_t>()))
.flags as *const _ as usize
},
8usize,
@@ -287,7 +287,7 @@ fn bindgen_test_layout___wasi_event_t___wasi_event_u() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_event_t___wasi_event_u>())).fd_readwrite as *const _
&(*(::core::ptr::null::<__wasi_event_t___wasi_event_u>())).fd_readwrite as *const _
as usize
},
0usize,
@@ -312,7 +312,7 @@ fn bindgen_test_layout___wasi_event_t() {
concat!("Alignment of ", stringify!(__wasi_event_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_event_t>())).userdata as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_event_t>())).userdata as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -322,7 +322,7 @@ fn bindgen_test_layout___wasi_event_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_event_t>())).error as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_event_t>())).error as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
@@ -332,7 +332,7 @@ fn bindgen_test_layout___wasi_event_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_event_t>())).type_ as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_event_t>())).type_ as *const _ as usize },
10usize,
concat!(
"Offset of field: ",
@@ -342,7 +342,7 @@ fn bindgen_test_layout___wasi_event_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_event_t>())).u as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_event_t>())).u as *const _ as usize },
16usize,
concat!(
"Offset of field: ",
@@ -388,7 +388,7 @@ fn bindgen_test_layout___wasi_prestat_t___wasi_prestat_u___wasi_prestat_u_dir_t(
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_prestat_t___wasi_prestat_u___wasi_prestat_u_dir_t>()))
&(*(::core::ptr::null::<__wasi_prestat_t___wasi_prestat_u___wasi_prestat_u_dir_t>()))
.pr_name_len as *const _ as usize
},
0usize,
@@ -417,7 +417,7 @@ fn bindgen_test_layout___wasi_prestat_t___wasi_prestat_u() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_prestat_t___wasi_prestat_u>())).dir as *const _ as usize
&(*(::core::ptr::null::<__wasi_prestat_t___wasi_prestat_u>())).dir as *const _ as usize
},
0usize,
concat!(
@@ -441,7 +441,7 @@ fn bindgen_test_layout___wasi_prestat_t() {
concat!("Alignment of ", stringify!(__wasi_prestat_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_prestat_t>())).pr_type as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_prestat_t>())).pr_type as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -451,7 +451,7 @@ fn bindgen_test_layout___wasi_prestat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_prestat_t>())).u as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_prestat_t>())).u as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
@@ -488,7 +488,7 @@ fn bindgen_test_layout_wasi_event_t__bindgen_ty_1__bindgen_ty_1() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_event_t__bindgen_ty_1__bindgen_ty_1>())).nbytes
&(*(::core::ptr::null::<__wasi_event_t__bindgen_ty_1__bindgen_ty_1>())).nbytes
as *const _ as usize
},
0usize,
@@ -501,8 +501,8 @@ fn bindgen_test_layout_wasi_event_t__bindgen_ty_1__bindgen_ty_1() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_event_t__bindgen_ty_1__bindgen_ty_1>())).flags as *const _
as usize
&(*(::core::ptr::null::<__wasi_event_t__bindgen_ty_1__bindgen_ty_1>())).flags
as *const _ as usize
},
8usize,
concat!(
@@ -540,7 +540,7 @@ fn bindgen_test_layout_wasi_event_t__bindgen_ty_1__bindgen_ty_2() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_event_t__bindgen_ty_1__bindgen_ty_2>())).signal
&(*(::core::ptr::null::<__wasi_event_t__bindgen_ty_1__bindgen_ty_2>())).signal
as *const _ as usize
},
0usize,
@@ -553,7 +553,7 @@ fn bindgen_test_layout_wasi_event_t__bindgen_ty_1__bindgen_ty_2() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_event_t__bindgen_ty_1__bindgen_ty_2>())).exitcode
&(*(::core::ptr::null::<__wasi_event_t__bindgen_ty_1__bindgen_ty_2>())).exitcode
as *const _ as usize
},
4usize,
@@ -575,7 +575,7 @@ fn bindgen_test_layout_wasi_event_t__bindgen_ty_1() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_event_t__bindgen_ty_1>())).fd_readwrite as *const _
&(*(::core::ptr::null::<__wasi_event_t__bindgen_ty_1>())).fd_readwrite as *const _
as usize
},
0usize,
@@ -595,7 +595,7 @@ fn bindgen_test_layout_wasi_event_t() {
concat!("Size of: ", stringify!(__wasi_event_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_event_t>())).userdata as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_event_t>())).userdata as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -605,7 +605,7 @@ fn bindgen_test_layout_wasi_event_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_event_t>())).error as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_event_t>())).error as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
@@ -615,7 +615,7 @@ fn bindgen_test_layout_wasi_event_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_event_t>())).type_ as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_event_t>())).type_ as *const _ as usize },
10usize,
concat!(
"Offset of field: ",
@@ -642,7 +642,7 @@ fn bindgen_test_layout_wasi_fdstat_t() {
concat!("Size of: ", stringify!(__wasi_fdstat_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_fdstat_t>())).fs_filetype as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_fdstat_t>())).fs_filetype as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -652,7 +652,7 @@ fn bindgen_test_layout_wasi_fdstat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_fdstat_t>())).fs_flags as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_fdstat_t>())).fs_flags as *const _ as usize },
2usize,
concat!(
"Offset of field: ",
@@ -662,7 +662,7 @@ fn bindgen_test_layout_wasi_fdstat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_fdstat_t>())).fs_rights_base as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_fdstat_t>())).fs_rights_base as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
@@ -673,7 +673,7 @@ fn bindgen_test_layout_wasi_fdstat_t() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_fdstat_t>())).fs_rights_inheriting as *const _ as usize
&(*(::core::ptr::null::<__wasi_fdstat_t>())).fs_rights_inheriting as *const _ as usize
},
16usize,
concat!(
@@ -704,7 +704,7 @@ fn bindgen_test_layout_wasi_filestat_t() {
concat!("Size of: ", stringify!(__wasi_filestat_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_filestat_t>())).st_dev as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_filestat_t>())).st_dev as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -714,7 +714,7 @@ fn bindgen_test_layout_wasi_filestat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_filestat_t>())).st_ino as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_filestat_t>())).st_ino as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
@@ -724,7 +724,7 @@ fn bindgen_test_layout_wasi_filestat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_filestat_t>())).st_filetype as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_filestat_t>())).st_filetype as *const _ as usize },
16usize,
concat!(
"Offset of field: ",
@@ -734,7 +734,7 @@ fn bindgen_test_layout_wasi_filestat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_filestat_t>())).st_nlink as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_filestat_t>())).st_nlink as *const _ as usize },
20usize,
concat!(
"Offset of field: ",
@@ -744,7 +744,7 @@ fn bindgen_test_layout_wasi_filestat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_filestat_t>())).st_size as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_filestat_t>())).st_size as *const _ as usize },
24usize,
concat!(
"Offset of field: ",
@@ -754,7 +754,7 @@ fn bindgen_test_layout_wasi_filestat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_filestat_t>())).st_atim as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_filestat_t>())).st_atim as *const _ as usize },
32usize,
concat!(
"Offset of field: ",
@@ -764,7 +764,7 @@ fn bindgen_test_layout_wasi_filestat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_filestat_t>())).st_mtim as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_filestat_t>())).st_mtim as *const _ as usize },
40usize,
concat!(
"Offset of field: ",
@@ -774,7 +774,7 @@ fn bindgen_test_layout_wasi_filestat_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_filestat_t>())).st_ctim as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_filestat_t>())).st_ctim as *const _ as usize },
48usize,
concat!(
"Offset of field: ",
@@ -803,7 +803,7 @@ fn bindgen_test_layout_wasi_ciovec_t() {
concat!("Alignment of ", stringify!(__wasi_ciovec_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_ciovec_t>())).buf as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_ciovec_t>())).buf as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -813,7 +813,7 @@ fn bindgen_test_layout_wasi_ciovec_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_ciovec_t>())).buf_len as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_ciovec_t>())).buf_len as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
@@ -842,7 +842,7 @@ fn bindgen_test_layout_wasi_iovec_t() {
concat!("Alignment of ", stringify!(__wasi_iovec_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_iovec_t>())).buf as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_iovec_t>())).buf as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -852,7 +852,7 @@ fn bindgen_test_layout_wasi_iovec_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_iovec_t>())).buf_len as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_iovec_t>())).buf_len as *const _ as usize },
4usize,
concat!(
"Offset of field: ",
@@ -913,7 +913,7 @@ fn bindgen_test_layout___wasi_subscription_t___wasi_subscription_u___wasi_subscr
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<
&(*(::core::ptr::null::<
__wasi_subscription_t___wasi_subscription_u___wasi_subscription_u_clock_t,
>()))
.identifier as *const _ as usize
@@ -928,7 +928,7 @@ fn bindgen_test_layout___wasi_subscription_t___wasi_subscription_u___wasi_subscr
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<
&(*(::core::ptr::null::<
__wasi_subscription_t___wasi_subscription_u___wasi_subscription_u_clock_t,
>()))
.clock_id as *const _ as usize
@@ -943,7 +943,7 @@ fn bindgen_test_layout___wasi_subscription_t___wasi_subscription_u___wasi_subscr
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<
&(*(::core::ptr::null::<
__wasi_subscription_t___wasi_subscription_u___wasi_subscription_u_clock_t,
>()))
.timeout as *const _ as usize
@@ -958,7 +958,7 @@ fn bindgen_test_layout___wasi_subscription_t___wasi_subscription_u___wasi_subscr
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<
&(*(::core::ptr::null::<
__wasi_subscription_t___wasi_subscription_u___wasi_subscription_u_clock_t,
>()))
.precision as *const _ as usize
@@ -973,7 +973,7 @@ fn bindgen_test_layout___wasi_subscription_t___wasi_subscription_u___wasi_subscr
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<
&(*(::core::ptr::null::<
__wasi_subscription_t___wasi_subscription_u___wasi_subscription_u_clock_t,
>()))
.flags as *const _ as usize
@@ -1021,7 +1021,7 @@ fn bindgen_test_layout___wasi_subscription_t___wasi_subscription_u___wasi_subscr
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<
&(*(::core::ptr::null::<
__wasi_subscription_t___wasi_subscription_u___wasi_subscription_u_fd_readwrite_t,
>()))
.fd as *const _ as usize
@@ -1057,7 +1057,7 @@ fn bindgen_test_layout___wasi_subscription_t___wasi_subscription_u() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_subscription_t___wasi_subscription_u>())).clock
&(*(::core::ptr::null::<__wasi_subscription_t___wasi_subscription_u>())).clock
as *const _ as usize
},
0usize,
@@ -1070,7 +1070,7 @@ fn bindgen_test_layout___wasi_subscription_t___wasi_subscription_u() {
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<__wasi_subscription_t___wasi_subscription_u>())).fd_readwrite
&(*(::core::ptr::null::<__wasi_subscription_t___wasi_subscription_u>())).fd_readwrite
as *const _ as usize
},
0usize,
@@ -1095,7 +1095,7 @@ fn bindgen_test_layout___wasi_subscription_t() {
concat!("Alignment of ", stringify!(__wasi_subscription_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_subscription_t>())).userdata as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_subscription_t>())).userdata as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
@@ -1105,7 +1105,7 @@ fn bindgen_test_layout___wasi_subscription_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_subscription_t>())).type_ as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_subscription_t>())).type_ as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
@@ -1115,7 +1115,7 @@ fn bindgen_test_layout___wasi_subscription_t() {
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__wasi_subscription_t>())).u as *const _ as usize },
unsafe { &(*(::core::ptr::null::<__wasi_subscription_t>())).u as *const _ as usize },
16usize,
concat!(
"Offset of field: ",