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 @@
1const std = @import("std");
21const 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");
38const c = @This();
49const maxInt = std.math.maxInt;
510const assert = std.debug.assert;
611const page_size = std.heap.page_size_min;
7const native_abi = builtin.abi;
8const native_arch = builtin.cpu.arch;
9const native_os = builtin.os.tag;
1012const linux = std.os.linux;
1113const emscripten = std.os.emscripten;
1214const wasi = std.os.wasi;
......@@ -4118,9 +4120,13 @@ const posix_msghdr = extern struct {
41184120 name: ?*sockaddr,
41194121 namelen: socklen_t,
41204122 iov: [*]iovec,
4123 pad0: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
41214124 iovlen: u32,
4125 pad1: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
41224126 control: ?*anyopaque,
4127 pad2: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
41234128 controllen: socklen_t,
4129 pad3: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
41244130 flags: u32,
41254131};
41264132
......@@ -4148,9 +4154,13 @@ const posix_msghdr_const = extern struct {
41484154 name: ?*const sockaddr,
41494155 namelen: socklen_t,
41504156 iov: [*]const iovec_const,
4157 pad0: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
41514158 iovlen: u32,
4159 pad1: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
41524160 control: ?*const anyopaque,
4161 pad2: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
41534162 controllen: socklen_t,
4163 pad3: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
41544164 flags: u32,
41554165};
41564166
......@@ -4193,7 +4203,9 @@ pub const cmsghdr = switch (native_os) {
41934203};
41944204
41954205const posix_cmsghdr = extern struct {
4206 pad0: if (@sizeOf(usize) == 8 and native_endian == .big) u32 else u0 = 0,
41964207 len: socklen_t,
4208 pad1: if (@sizeOf(usize) == 8 and native_endian == .little) u32 else u0 = 0,
41974209 level: c_int,
41984210 type: c_int,
41994211};