authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-10-27 21:49:45-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-10-29 06:20:52-07:00
logc0c20105354f05a354bf28fd5c05c19e7723b2a7
tree876a4b3394baffb3dc70960a3968423343d71ea6
parenta28d3059e60ccbed2b2b159c41899488330bc671

std.c: fix msghdr struct on big endian targets


1 files changed, 16 insertions(+), 4 deletions(-)

lib/std/c.zig+16-4
...@@ -1,12 +1,14 @@...@@ -1,12 +1,14 @@
1const std = @import("std");
2const builtin = @import("builtin");1const builtin = @import("builtin");
2const native_abi = builtin.abi;
3const native_arch = builtin.cpu.arch;
4const native_os = builtin.os.tag;
5const native_endian = builtin.cpu.arch.endian();
6
7const std = @import("std");
3const c = @This();8const c = @This();
4const maxInt = std.math.maxInt;9const maxInt = std.math.maxInt;
5const assert = std.debug.assert;10const assert = std.debug.assert;
6const page_size = std.heap.page_size_min;11const page_size = std.heap.page_size_min;
7const native_abi = builtin.abi;
8const native_arch = builtin.cpu.arch;
9const native_os = builtin.os.tag;
10const linux = std.os.linux;12const linux = std.os.linux;
11const emscripten = std.os.emscripten;13const emscripten = std.os.emscripten;
12const wasi = std.os.wasi;14const wasi = std.os.wasi;
...@@ -4118,9 +4120,13 @@ const posix_msghdr = extern struct {...@@ -4118,9 +4120,13 @@ const posix_msghdr = extern struct {
4118 name: ?*sockaddr,4120 name: ?*sockaddr,
4119 namelen: socklen_t,4121 namelen: socklen_t,
4120 iov: [*]iovec,4122 iov: [*]iovec,
4123 pad0: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
4121 iovlen: u32,4124 iovlen: u32,
4125 pad1: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
4122 control: ?*anyopaque,4126 control: ?*anyopaque,
4127 pad2: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
4123 controllen: socklen_t,4128 controllen: socklen_t,
4129 pad3: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
4124 flags: u32,4130 flags: u32,
4125};4131};
41264132
...@@ -4148,9 +4154,13 @@ const posix_msghdr_const = extern struct {...@@ -4148,9 +4154,13 @@ const posix_msghdr_const = extern struct {
4148 name: ?*const sockaddr,4154 name: ?*const sockaddr,
4149 namelen: socklen_t,4155 namelen: socklen_t,
4150 iov: [*]const iovec_const,4156 iov: [*]const iovec_const,
4157 pad0: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
4151 iovlen: u32,4158 iovlen: u32,
4159 pad1: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
4152 control: ?*const anyopaque,4160 control: ?*const anyopaque,
4161 pad2: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
4153 controllen: socklen_t,4162 controllen: socklen_t,
4163 pad3: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
4154 flags: u32,4164 flags: u32,
4155};4165};
41564166
...@@ -4193,7 +4203,9 @@ pub const cmsghdr = switch (native_os) {...@@ -4193,7 +4203,9 @@ pub const cmsghdr = switch (native_os) {
4193};4203};
41944204
4195const posix_cmsghdr = extern struct {4205const posix_cmsghdr = extern struct {
4206 pad0: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
4196 len: socklen_t,4207 len: socklen_t,
4208 pad1: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
4197 level: c_int,4209 level: c_int,
4198 type: c_int,4210 type: c_int,
4199};4211};