From a2d8f03092419853b6bbcee45ea759ae994cc2d5 Mon Sep 17 00:00:00 2001 From: Shritesh Bhattarai Date: Sat, 13 Apr 2019 22:28:58 -0500 Subject: support extern "wasi" functions --- src/ir.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index de4543df4e..73a24a815a 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -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))); -- cgit v1.2.3 From ecd0f8925447074307e8795bb8d6f9f6277a1a26 Mon Sep 17 00:00:00 2001 From: Shritesh Bhattarai Date: Sat, 13 Apr 2019 23:49:02 -0500 Subject: wasi: better extern wasi logic --- src/ir.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index 73a24a815a..2cafc1edd0 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -15836,10 +15836,10 @@ 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")) { + bool is_wasi = buf_eql_str(lib_name, "wasi"); + if (is_wasi && ira->codegen->zig_target->os != OsWASI) { ir_add_error_node(ira, source_node, - buf_sprintf("linking against wasi libarry")); + buf_sprintf("linking against wasi library")); ira->codegen->reported_bad_link_libc_error = true; } @@ -15851,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 && !is_wasi) { + if (!is_libc && !is_wasi && !ira->codegen->have_pic && !ira->codegen->reported_bad_link_libc_error) { 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))); -- cgit v1.2.3