| ... | @@ -3222,16 +3222,21 @@ pub const epoll_data = extern union { | ... | @@ -3222,16 +3222,21 @@ pub const epoll_data = extern union { |
| 3222 | @"u64": u64, | 3222 | @"u64": u64, |
| 3223 | }; | 3223 | }; |
| 3224 | | 3224 | |
| 3225 | // On x86_64 the structure is packed so that it matches the definition of its | 3225 | pub const epoll_event = switch (builtin.zig_backend) { |
| 3226 | // 32bit counterpart | 3226 | // stage1 crashes with the align(4) field so we have this workaround |
| 3227 | pub const epoll_event = switch (native_arch) { | 3227 | .stage1 => switch (native_arch) { |
| 3228 | .x86_64 => packed struct { | 3228 | .x86_64 => packed struct { |
| 3229 | events: u32, | 3229 | events: u32, |
| 3230 | data: epoll_data, | 3230 | data: epoll_data, |
| | 3231 | }, |
| | 3232 | else => extern struct { |
| | 3233 | events: u32, |
| | 3234 | data: epoll_data, |
| | 3235 | }, |
| 3231 | }, | 3236 | }, |
| 3232 | else => extern struct { | 3237 | else => extern struct { |
| 3233 | events: u32, | 3238 | events: u32, |
| 3234 | data: epoll_data, | 3239 | data: epoll_data align(4), |
| 3235 | }, | 3240 | }, |
| 3236 | }; | 3241 | }; |
| 3237 | | 3242 | |