aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Compilation.zig16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 73db9f5e97..813c2483b0 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -2042,10 +2042,6 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
for (mingw.always_link_libs) |name| {
try comp.bin_file.options.system_libs.put(comp.gpa, name, .{});
}
-
- // LLD might drop some symbols as unused during LTO and GCing, therefore,
- // we force mark them for resolution here.
- try comp.bin_file.options.force_undefined_symbols.put(comp.gpa, "_tls_index", {});
}
// Generate Windows import libs.
if (target.os.tag == .windows) {
@@ -2067,6 +2063,18 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
try comp.work_queue.writeItem(.libtsan);
}
+ if (comp.getTarget().isMinGW() and !comp.bin_file.options.single_threaded) {
+ // LLD might drop some symbols as unused during LTO and GCing, therefore,
+ // we force mark them for resolution here.
+
+ var tls_index_sym = switch (comp.getTarget().cpu.arch) {
+ .x86 => "__tls_index",
+ else => "_tls_index",
+ };
+
+ try comp.bin_file.options.force_undefined_symbols.put(comp.gpa, tls_index_sym, {});
+ }
+
if (comp.bin_file.options.include_compiler_rt and capable_of_building_compiler_rt) {
if (is_exe_or_dyn_lib) {
log.debug("queuing a job to build compiler_rt_lib", .{});