Skip to content

Commit

Permalink
Auto merge of #2075 - sunfishcode:sunfishcode/wasi-at-fdcwd, r=JohnTitor
Browse files Browse the repository at this point in the history
WASI: define `AT_FDCWD` and update to latest WASI libc

Update to the latest WASI libc, define `AT_FDCWD`, update the signature
for __wasilibc_find_relpath, and add declarations for various
`__wasilibc_` utility functions.
  • Loading branch information
bors committed Feb 19, 2021
2 parents f9562dd + 197d922 commit ec101fa
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 3 deletions.
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

0 comments on commit ec101fa

Please sign in to comment.