| ... | ... | @@ -1,11 +1,12 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | const windows = std.os.windows; |
| 3 | 4 | |
| 4 | 5 | export var _tls_index: u32 = std.os.windows.TLS_OUT_OF_INDEXES; |
| 5 | 6 | export var _tls_start: ?*anyopaque linksection(".tls") = null; |
| 6 | 7 | export var _tls_end: ?*anyopaque linksection(".tls$ZZZ") = null; |
| 7 | | export var __xl_a: std.os.windows.PIMAGE_TLS_CALLBACK linksection(".CRT$XLA") = null; |
| 8 | | export var __xl_z: std.os.windows.PIMAGE_TLS_CALLBACK linksection(".CRT$XLZ") = null; |
| 8 | export var __xl_a: windows.PIMAGE_TLS_CALLBACK linksection(".CRT$XLA") = null; |
| 9 | export var __xl_z: windows.PIMAGE_TLS_CALLBACK linksection(".CRT$XLZ") = null; |
| 9 | 10 | |
| 10 | 11 | comptime { |
| 11 | 12 | if (builtin.target.cpu.arch == .x86 and builtin.zig_backend != .stage2_c) { |
| ... | ... | @@ -33,8 +34,8 @@ comptime { |
| 33 | 34 | pub const IMAGE_TLS_DIRECTORY = extern struct { |
| 34 | 35 | StartAddressOfRawData: *?*anyopaque, |
| 35 | 36 | EndAddressOfRawData: *?*anyopaque, |
| 36 | | AddressOfIndex: *anyopaque, |
| 37 | | AddressOfCallBacks: *anyopaque, |
| 37 | AddressOfIndex: *u32, |
| 38 | AddressOfCallBacks: *windows.PIMAGE_TLS_CALLBACK, |
| 38 | 39 | SizeOfZeroFill: u32, |
| 39 | 40 | Characteristics: u32, |
| 40 | 41 | }; |
| ... | ... | @@ -42,7 +43,7 @@ export const _tls_used linksection(".rdata$T") = IMAGE_TLS_DIRECTORY{ |
| 42 | 43 | .StartAddressOfRawData = &_tls_start, |
| 43 | 44 | .EndAddressOfRawData = &_tls_end, |
| 44 | 45 | .AddressOfIndex = &_tls_index, |
| 45 | | .AddressOfCallBacks = @as(*anyopaque, @ptrCast(&__xl_a)), |
| 46 | .AddressOfCallBacks = &__xl_a, |
| 46 | 47 | .SizeOfZeroFill = 0, |
| 47 | 48 | .Characteristics = 0, |
| 48 | 49 | }; |