support extern "wasi" functions
This commit is contained in:
parent
93528be6b1
commit
a2d8f03092
|
@ -15836,6 +15836,13 @@ static void add_link_lib_symbol(IrAnalyze *ira, Buf *lib_name, Buf *symbol_name,
|
|||
ira->codegen->reported_bad_link_libc_error = true;
|
||||
}
|
||||
|
||||
bool is_wasi = ira->codegen->zig_target->os == OsWASI;
|
||||
if (!is_wasi && buf_eql_str(lib_name, "wasi")) {
|
||||
ir_add_error_node(ira, source_node,
|
||||
buf_sprintf("linking against wasi libarry"));
|
||||
ira->codegen->reported_bad_link_libc_error = true;
|
||||
}
|
||||
|
||||
LinkLib *link_lib = add_link_lib(ira->codegen, lib_name);
|
||||
for (size_t i = 0; i < link_lib->symbols.length; i += 1) {
|
||||
Buf *existing_symbol_name = link_lib->symbols.at(i);
|
||||
|
@ -15844,7 +15851,7 @@ static void add_link_lib_symbol(IrAnalyze *ira, Buf *lib_name, Buf *symbol_name,
|
|||
}
|
||||
}
|
||||
|
||||
if (!is_libc && !ira->codegen->have_pic && !ira->codegen->reported_bad_link_libc_error) {
|
||||
if (!is_libc && !ira->codegen->have_pic && !ira->codegen->reported_bad_link_libc_error && !is_wasi) {
|
||||
ErrorMsg *msg = ir_add_error_node(ira, source_node,
|
||||
buf_sprintf("dependency on dynamic library '%s' requires enabling Position Independent Code",
|
||||
buf_ptr(lib_name)));
|
||||
|
|
|
@ -10,8 +10,8 @@ pub const __wasi_ciovec_t = extern struct {
|
|||
|
||||
pub const __WASI_SIGABRT: __wasi_signal_t = 6;
|
||||
|
||||
pub extern fn __wasi_proc_raise(sig: __wasi_signal_t) __wasi_errno_t;
|
||||
pub extern "wasi" fn __wasi_proc_raise(sig: __wasi_signal_t) __wasi_errno_t;
|
||||
|
||||
pub extern fn __wasi_proc_exit(rval: __wasi_exitcode_t) noreturn;
|
||||
pub extern "wasi" fn __wasi_proc_exit(rval: __wasi_exitcode_t) noreturn;
|
||||
|
||||
pub extern fn __wasi_fd_write(fd: __wasi_fd_t, iovs: *const __wasi_ciovec_t, iovs_len: usize, nwritten: *usize) __wasi_errno_t;
|
||||
pub extern "wasi" fn __wasi_fd_write(fd: __wasi_fd_t, iovs: *const __wasi_ciovec_t, iovs_len: usize, nwritten: *usize) __wasi_errno_t;
|
||||
|
|
Loading…
Reference in New Issue
Block a user