aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShritesh Bhattarai <shritesh@shritesh.com>2019-04-13 22:28:58 -0500
committerShritesh Bhattarai <shritesh@shritesh.com>2019-04-13 22:28:58 -0500
commita2d8f03092419853b6bbcee45ea759ae994cc2d5 (patch)
treebf8ede52d1c3dd6cc2eb7148d8945321fc81ea82 /src
parent93528be6b19d608b4a02944e7e599554fc9f1378 (diff)
downloadzig-a2d8f03092419853b6bbcee45ea759ae994cc2d5.tar.gz
zig-a2d8f03092419853b6bbcee45ea759ae994cc2d5.zip
support extern "wasi" functions
Diffstat (limited to 'src')
-rw-r--r--src/ir.cpp9
1 files changed, 8 insertions, 1 deletions
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)));