| ... | @@ -15836,6 +15836,13 @@ static void add_link_lib_symbol(IrAnalyze *ira, Buf *lib_name, Buf *symbol_name, | ... | @@ -15836,6 +15836,13 @@ static void add_link_lib_symbol(IrAnalyze *ira, Buf *lib_name, Buf *symbol_name, |
| 15836 | ira->codegen->reported_bad_link_libc_error = true; | 15836 | ira->codegen->reported_bad_link_libc_error = true; |
| 15837 | } | 15837 | } |
| 15838 | | 15838 | |
| | 15839 | bool is_wasi = ira->codegen->zig_target->os == OsWASI; |
| | 15840 | if (!is_wasi && buf_eql_str(lib_name, "wasi")) { |
| | 15841 | ir_add_error_node(ira, source_node, |
| | 15842 | buf_sprintf("linking against wasi libarry")); |
| | 15843 | ira->codegen->reported_bad_link_libc_error = true; |
| | 15844 | } |
| | 15845 | |
| 15839 | LinkLib *link_lib = add_link_lib(ira->codegen, lib_name); | 15846 | LinkLib *link_lib = add_link_lib(ira->codegen, lib_name); |
| 15840 | for (size_t i = 0; i < link_lib->symbols.length; i += 1) { | 15847 | for (size_t i = 0; i < link_lib->symbols.length; i += 1) { |
| 15841 | Buf *existing_symbol_name = link_lib->symbols.at(i); | 15848 | 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, | ... | @@ -15844,7 +15851,7 @@ static void add_link_lib_symbol(IrAnalyze *ira, Buf *lib_name, Buf *symbol_name, |
| 15844 | } | 15851 | } |
| 15845 | } | 15852 | } |
| 15846 | | 15853 | |
| 15847 | if (!is_libc && !ira->codegen->have_pic && !ira->codegen->reported_bad_link_libc_error) { | 15854 | if (!is_libc && !ira->codegen->have_pic && !ira->codegen->reported_bad_link_libc_error && !is_wasi) { |
| 15848 | ErrorMsg *msg = ir_add_error_node(ira, source_node, | 15855 | ErrorMsg *msg = ir_add_error_node(ira, source_node, |
| 15849 | buf_sprintf("dependency on dynamic library '%s' requires enabling Position Independent Code", | 15856 | buf_sprintf("dependency on dynamic library '%s' requires enabling Position Independent Code", |
| 15850 | buf_ptr(lib_name))); | 15857 | buf_ptr(lib_name))); |