Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WASI: define AT_FDCWD and update to latest WASI libc #2075

Merged
merged 1 commit into from
Feb 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ci/docker/wasm32-wasi/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ RUN apt-get update && \
# verification for now. The sysroot is currently in somewhat of a state of flux
# and is expected to have breaking changes, so this is an attempt to mitigate
# those breaking changes on `libc`'s own CI
RUN git clone https://github.com/CraneStation/wasi-libc && \
RUN git clone https://github.com/WebAssembly/wasi-libc && \
cd wasi-libc && \
git reset --hard f645f498dfbbbc00a7a97874d33082d3605c3f21
git reset --hard f2e779e5f1ba4a539937cedeeaa762c1e0c162df
RUN apt-get install -y --no-install-recommends llvm
RUN make -C wasi-libc install -j $(nproc) INSTALL_DIR=/wasi-libc

Expand Down
1 change: 1 addition & 0 deletions libc-test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1272,6 +1272,7 @@ fn test_wasi(target: &str) {
"wasi/api.h",
"wasi/libc.h",
"wasi/libc-find-relpath.h",
"wasi/libc-nocwd.h",
"wchar.h",
}

Expand Down
110 changes: 109 additions & 1 deletion src/wasi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ pub const POSIX_FADV_NORMAL: c_int = 0;
pub const POSIX_FADV_RANDOM: c_int = 2;
pub const POSIX_FADV_SEQUENTIAL: c_int = 1;
pub const POSIX_FADV_WILLNEED: c_int = 3;
pub const AT_FDCWD: ::c_int = -2;
pub const AT_EACCESS: c_int = 0x0;
pub const AT_SYMLINK_NOFOLLOW: c_int = 0x1;
pub const AT_SYMLINK_FOLLOW: c_int = 0x2;
Expand Down Expand Up @@ -775,9 +776,116 @@ extern "C" {
pub fn __wasilibc_rmdirat(fd: c_int, path: *const c_char) -> c_int;
pub fn __wasilibc_find_relpath(
path: *const c_char,
relative_path: *mut *const c_char,
abs_prefix: *mut *const c_char,
relative_path: *mut *mut c_char,
relative_path_len: usize,
) -> c_int;
pub fn __wasilibc_tell(fd: c_int) -> ::off_t;
pub fn __wasilibc_nocwd___wasilibc_unlinkat(
dirfd: c_int,
path: *const c_char,
) -> c_int;
pub fn __wasilibc_nocwd___wasilibc_rmdirat(
dirfd: c_int,
path: *const c_char,
) -> c_int;
pub fn __wasilibc_nocwd_linkat(
olddirfd: c_int,
oldpath: *const c_char,
newdirfd: c_int,
newpath: *const c_char,
flags: c_int,
) -> c_int;
pub fn __wasilibc_nocwd_symlinkat(
target: *const c_char,
dirfd: c_int,
path: *const c_char,
) -> c_int;
pub fn __wasilibc_nocwd_readlinkat(
dirfd: c_int,
path: *const c_char,
buf: *mut c_char,
bufsize: usize,
) -> isize;
pub fn __wasilibc_nocwd_faccessat(
dirfd: c_int,
path: *const c_char,
mode: c_int,
flags: c_int,
) -> c_int;
pub fn __wasilibc_nocwd_renameat(
olddirfd: c_int,
oldpath: *const c_char,
newdirfd: c_int,
newpath: *const c_char,
) -> c_int;
pub fn __wasilibc_nocwd_openat_nomode(
dirfd: c_int,
path: *const c_char,
flags: c_int,
) -> c_int;
pub fn __wasilibc_nocwd_fstatat(
dirfd: c_int,
path: *const c_char,
buf: *mut stat,
flags: c_int,
) -> c_int;
pub fn __wasilibc_nocwd_mkdirat_nomode(
dirfd: c_int,
path: *const c_char,
) -> c_int;
pub fn __wasilibc_nocwd_utimensat(
dirfd: c_int,
path: *const c_char,
times: *const ::timespec,
flags: c_int,
) -> c_int;
pub fn __wasilibc_nocwd_opendirat(
dirfd: c_int,
path: *const c_char,
) -> *mut ::DIR;
pub fn __wasilibc_access(
pathname: *const c_char,
mode: c_int,
flags: c_int,
) -> c_int;
pub fn __wasilibc_stat(
pathname: *const c_char,
buf: *mut stat,
flags: c_int,
) -> c_int;
pub fn __wasilibc_utimens(
pathname: *const c_char,
times: *const ::timespec,
flags: c_int,
) -> c_int;
pub fn __wasilibc_link(
oldpath: *const c_char,
newpath: *const c_char,
flags: c_int,
) -> c_int;
pub fn __wasilibc_link_oldat(
olddirfd: c_int,
oldpath: *const c_char,
newpath: *const c_char,
flags: c_int,
) -> c_int;
pub fn __wasilibc_link_newat(
oldpath: *const c_char,
newdirfd: c_int,
newpath: *const c_char,
flags: c_int,
) -> c_int;
pub fn __wasilibc_rename_oldat(
olddirfd: c_int,
oldpath: *const c_char,
newpath: *const c_char,
) -> c_int;
pub fn __wasilibc_rename_newat(
oldpath: *const c_char,
newdirfd: c_int,
newpath: *const c_char,
) -> c_int;

pub fn arc4random() -> u32;
pub fn arc4random_buf(a: *mut c_void, b: size_t);
Expand Down