diff options
| -rw-r--r-- | src/codegen.cpp | 4 | ||||
| -rw-r--r-- | src/link.cpp | 1 | ||||
| -rw-r--r-- | std/special/compiler_rt/comparetf2.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunsdfdi.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunsdfsi.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunsdfti.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunssfdi.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunssfsi.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunssfti.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunstfdi.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunstfsi.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/fixunstfti.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/index.zig | 6 | ||||
| -rw-r--r-- | std/special/compiler_rt/udivmoddi4.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/udivmodti4.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/udivti3.zig | 2 | ||||
| -rw-r--r-- | std/special/compiler_rt/umodti3.zig | 2 |
17 files changed, 18 insertions, 21 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp index 8c5d7622cc..6fb8d4b8ef 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -456,10 +456,10 @@ static LLVMValueRef fn_llvm_value(CodeGen *g, FnTableEntry *fn_table_entry) { LLVMSetLinkage(fn_table_entry->llvm_value, LLVMExternalLinkage); break; case GlobalLinkageIdWeak: - LLVMSetLinkage(fn_table_entry->llvm_value, LLVMWeakAnyLinkage); + LLVMSetLinkage(fn_table_entry->llvm_value, LLVMWeakODRLinkage); break; case GlobalLinkageIdLinkOnce: - LLVMSetLinkage(fn_table_entry->llvm_value, LLVMLinkOnceAnyLinkage); + LLVMSetLinkage(fn_table_entry->llvm_value, LLVMLinkOnceODRLinkage); break; } diff --git a/src/link.cpp b/src/link.cpp index f2f21fd746..316c7bc761 100644 --- a/src/link.cpp +++ b/src/link.cpp @@ -38,6 +38,7 @@ static Buf *build_o_raw(CodeGen *parent_gen, const char *oname, Buf *full_path) child_gen->want_h_file = false; child_gen->verbose_link = parent_gen->verbose_link; + child_gen->verbose_ir = parent_gen->verbose_ir; codegen_set_cache_dir(child_gen, parent_gen->cache_dir); diff --git a/std/special/compiler_rt/comparetf2.zig b/std/special/compiler_rt/comparetf2.zig index 45c7cb5037..f1552ca61f 100644 --- a/std/special/compiler_rt/comparetf2.zig +++ b/std/special/compiler_rt/comparetf2.zig @@ -20,7 +20,7 @@ const infRep = exponentMask; const builtin = @import("builtin"); const is_test = builtin.is_test; -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __letf2(a: f128, b: f128) -> c_int { @setDebugSafety(this, is_test); diff --git a/std/special/compiler_rt/fixunsdfdi.zig b/std/special/compiler_rt/fixunsdfdi.zig index 0290ad3975..5f730bbc85 100644 --- a/std/special/compiler_rt/fixunsdfdi.zig +++ b/std/special/compiler_rt/fixunsdfdi.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunsdfdi(a: f64) -> u64 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/fixunsdfsi.zig b/std/special/compiler_rt/fixunsdfsi.zig index 1dbc2525f2..784d5fde4f 100644 --- a/std/special/compiler_rt/fixunsdfsi.zig +++ b/std/special/compiler_rt/fixunsdfsi.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunsdfsi(a: f64) -> u32 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/fixunsdfti.zig b/std/special/compiler_rt/fixunsdfti.zig index 33b0e7c274..579455c2f9 100644 --- a/std/special/compiler_rt/fixunsdfti.zig +++ b/std/special/compiler_rt/fixunsdfti.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunsdfti(a: f64) -> u128 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/fixunssfdi.zig b/std/special/compiler_rt/fixunssfdi.zig index c183f17c62..eab553d8c9 100644 --- a/std/special/compiler_rt/fixunssfdi.zig +++ b/std/special/compiler_rt/fixunssfdi.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunssfdi(a: f32) -> u64 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/fixunssfsi.zig b/std/special/compiler_rt/fixunssfsi.zig index 51ceef65d3..18c0e66677 100644 --- a/std/special/compiler_rt/fixunssfsi.zig +++ b/std/special/compiler_rt/fixunssfsi.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunssfsi(a: f32) -> u32 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/fixunssfti.zig b/std/special/compiler_rt/fixunssfti.zig index 69e1c82a9d..f513604247 100644 --- a/std/special/compiler_rt/fixunssfti.zig +++ b/std/special/compiler_rt/fixunssfti.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunssfti(a: f32) -> u128 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/fixunstfdi.zig b/std/special/compiler_rt/fixunstfdi.zig index a5dbe0f52e..85212e2176 100644 --- a/std/special/compiler_rt/fixunstfdi.zig +++ b/std/special/compiler_rt/fixunstfdi.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunstfdi(a: f128) -> u64 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/fixunstfsi.zig b/std/special/compiler_rt/fixunstfsi.zig index d488f4c602..33c85c9224 100644 --- a/std/special/compiler_rt/fixunstfsi.zig +++ b/std/special/compiler_rt/fixunstfsi.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunstfsi(a: f128) -> u32 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/fixunstfti.zig b/std/special/compiler_rt/fixunstfti.zig index fc5c645d72..1bf7fbab4b 100644 --- a/std/special/compiler_rt/fixunstfti.zig +++ b/std/special/compiler_rt/fixunstfti.zig @@ -1,6 +1,6 @@ const fixuint = @import("fixuint.zig").fixuint; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __fixunstfti(a: f128) -> u128 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/index.zig b/std/special/compiler_rt/index.zig index 4a4d71fde9..bea06a0b41 100644 --- a/std/special/compiler_rt/index.zig +++ b/std/special/compiler_rt/index.zig @@ -26,7 +26,7 @@ const win32 = builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch. const win64 = builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.x86_64; const win32_nocrt = win32 and !builtin.link_libc; const win64_nocrt = win64 and !builtin.link_libc; -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +pub const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.Weak; const strong_linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.Strong; const __udivmoddi4 = @import("udivmoddi4.zig").__udivmoddi4; @@ -152,10 +152,6 @@ export nakedcc fn _chkstk() align(4) { @setGlobalLinkage(_chkstk, builtin.GlobalLinkage.Internal); } -// TODO The implementation from compiler-rt causes crashes and -// the implementation from disassembled ntdll seems to depend on -// thread local storage. So we have given up this safety check -// and simply have `ret`. export nakedcc fn __chkstk() align(4) { @setDebugSafety(this, false); diff --git a/std/special/compiler_rt/udivmoddi4.zig b/std/special/compiler_rt/udivmoddi4.zig index 2e167bc64a..8005538d9a 100644 --- a/std/special/compiler_rt/udivmoddi4.zig +++ b/std/special/compiler_rt/udivmoddi4.zig @@ -1,6 +1,6 @@ const udivmod = @import("udivmod.zig").udivmod; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __udivmoddi4(a: u64, b: u64, maybe_rem: ?&u64) -> u64 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/udivmodti4.zig b/std/special/compiler_rt/udivmodti4.zig index d7507e9521..2ee2fdb57f 100644 --- a/std/special/compiler_rt/udivmodti4.zig +++ b/std/special/compiler_rt/udivmodti4.zig @@ -1,6 +1,6 @@ const udivmod = @import("udivmod.zig").udivmod; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __udivmodti4(a: u128, b: u128, maybe_rem: ?&u128) -> u128 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/udivti3.zig b/std/special/compiler_rt/udivti3.zig index 67ea15eb96..3764449758 100644 --- a/std/special/compiler_rt/udivti3.zig +++ b/std/special/compiler_rt/udivti3.zig @@ -1,6 +1,6 @@ const __udivmodti4 = @import("udivmodti4.zig").__udivmodti4; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __udivti3(a: u128, b: u128) -> u128 { @setDebugSafety(this, builtin.is_test); diff --git a/std/special/compiler_rt/umodti3.zig b/std/special/compiler_rt/umodti3.zig index e4a4e7a7ee..0ad9e127b3 100644 --- a/std/special/compiler_rt/umodti3.zig +++ b/std/special/compiler_rt/umodti3.zig @@ -1,6 +1,6 @@ const __udivmodti4 = @import("udivmodti4.zig").__udivmodti4; const builtin = @import("builtin"); -const linkage = if (builtin.is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.LinkOnce; +const linkage = @import("index.zig").linkage; export fn __umodti3(a: u128, b: u128) -> u128 { @setDebugSafety(this, builtin.is_test); |
