authorgravatar for truemedian@gmail.comNameless <truemedian@gmail.com> 2024-08-02 15:59:13-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-01 16:35:26-07:00
loga500651370b3ca60f0fe8fba67d0124f136f0ec0
treeca92e85115e11842594a04856e51415d5f5be96c
parentbf00eb3006a358bbb1da694fb6d725eb6a8eeaaa

os: fix missing and incorrect msghdr definitions

Macos uses the BSD definition of msghdr All linux architectures share a single msghdr definition. Many architectures had manually inserted padding fields that were endian specific and some had fields with different integers. This unifies all architectures to use a single correct msghdr definition.

12 files changed, 20 insertions(+), 238 deletions(-)

lib/std/os/linux.zig+20-2
...@@ -103,8 +103,6 @@ pub const dev_t = arch_bits.dev_t;...@@ -103,8 +103,6 @@ pub const dev_t = arch_bits.dev_t;
103pub const ino_t = arch_bits.ino_t;103pub const ino_t = arch_bits.ino_t;
104pub const mcontext_t = arch_bits.mcontext_t;104pub const mcontext_t = arch_bits.mcontext_t;
105pub const mode_t = arch_bits.mode_t;105pub const mode_t = arch_bits.mode_t;
106pub const msghdr = arch_bits.msghdr;
107pub const msghdr_const = arch_bits.msghdr_const;
108pub const nlink_t = arch_bits.nlink_t;106pub const nlink_t = arch_bits.nlink_t;
109pub const off_t = arch_bits.off_t;107pub const off_t = arch_bits.off_t;
110pub const time_t = arch_bits.time_t;108pub const time_t = arch_bits.time_t;
...@@ -9403,3 +9401,23 @@ pub const SHADOW_STACK = struct {...@@ -9403,3 +9401,23 @@ pub const SHADOW_STACK = struct {
9403 /// Set up a restore token in the shadow stack.9401 /// Set up a restore token in the shadow stack.
9404 pub const SET_TOKEN: u64 = 1 << 0;9402 pub const SET_TOKEN: u64 = 1 << 0;
9405};9403};
9404
9405pub const msghdr = extern struct {
9406 name: ?*sockaddr,
9407 namelen: socklen_t,
9408 iov: [*]iovec,
9409 iovlen: usize,
9410 control: ?*anyopaque,
9411 controllen: usize,
9412 flags: u32,
9413};
9414
9415pub const msghdr_const = extern struct {
9416 name: ?*const sockaddr,
9417 namelen: socklen_t,
9418 iov: [*]const iovec_const,
9419 iovlen: usize,
9420 control: ?*const anyopaque,
9421 controllen: usize,
9422 flags: u32,
9423};
\ No newline at end of file
lib/std/os/linux/aarch64.zig-24
...@@ -199,30 +199,6 @@ pub const Flock = extern struct {...@@ -199,30 +199,6 @@ pub const Flock = extern struct {
199 __unused: [4]u8,199 __unused: [4]u8,
200};200};
201201
202pub const msghdr = extern struct {
203 name: ?*sockaddr,
204 namelen: socklen_t,
205 iov: [*]iovec,
206 iovlen: i32,
207 __pad1: i32 = 0,
208 control: ?*anyopaque,
209 controllen: socklen_t,
210 __pad2: socklen_t = 0,
211 flags: i32,
212};
213
214pub const msghdr_const = extern struct {
215 name: ?*const sockaddr,
216 namelen: socklen_t,
217 iov: [*]const iovec_const,
218 iovlen: i32,
219 __pad1: i32 = 0,
220 control: ?*const anyopaque,
221 controllen: socklen_t,
222 __pad2: socklen_t = 0,
223 flags: i32,
224};
225
226pub const blksize_t = i32;202pub const blksize_t = i32;
227pub const nlink_t = u32;203pub const nlink_t = u32;
228pub const time_t = isize;204pub const time_t = isize;
lib/std/os/linux/arm.zig-20
...@@ -237,26 +237,6 @@ pub const Flock = extern struct {...@@ -237,26 +237,6 @@ pub const Flock = extern struct {
237 __unused: [4]u8,237 __unused: [4]u8,
238};238};
239239
240pub const msghdr = extern struct {
241 name: ?*sockaddr,
242 namelen: socklen_t,
243 iov: [*]iovec,
244 iovlen: i32,
245 control: ?*anyopaque,
246 controllen: socklen_t,
247 flags: i32,
248};
249
250pub const msghdr_const = extern struct {
251 name: ?*const sockaddr,
252 namelen: socklen_t,
253 iov: [*]const iovec_const,
254 iovlen: i32,
255 control: ?*const anyopaque,
256 controllen: socklen_t,
257 flags: i32,
258};
259
260pub const blksize_t = i32;240pub const blksize_t = i32;
261pub const nlink_t = u32;241pub const nlink_t = u32;
262pub const time_t = isize;242pub const time_t = isize;
lib/std/os/linux/mips.zig-20
...@@ -309,26 +309,6 @@ pub const Flock = extern struct {...@@ -309,26 +309,6 @@ pub const Flock = extern struct {
309 __unused: [4]u8,309 __unused: [4]u8,
310};310};
311311
312pub const msghdr = extern struct {
313 name: ?*sockaddr,
314 namelen: socklen_t,
315 iov: [*]iovec,
316 iovlen: i32,
317 control: ?*anyopaque,
318 controllen: socklen_t,
319 flags: i32,
320};
321
322pub const msghdr_const = extern struct {
323 name: ?*const sockaddr,
324 namelen: socklen_t,
325 iov: [*]const iovec_const,
326 iovlen: i32,
327 control: ?*const anyopaque,
328 controllen: socklen_t,
329 flags: i32,
330};
331
332pub const blksize_t = u32;312pub const blksize_t = u32;
333pub const nlink_t = u32;313pub const nlink_t = u32;
334pub const time_t = i32;314pub const time_t = i32;
lib/std/os/linux/mips64.zig-20
...@@ -288,26 +288,6 @@ pub const Flock = extern struct {...@@ -288,26 +288,6 @@ pub const Flock = extern struct {
288 __unused: [4]u8,288 __unused: [4]u8,
289};289};
290290
291pub const msghdr = extern struct {
292 name: ?*sockaddr,
293 namelen: socklen_t,
294 iov: [*]iovec,
295 iovlen: i32,
296 control: ?*anyopaque,
297 controllen: socklen_t,
298 flags: i32,
299};
300
301pub const msghdr_const = extern struct {
302 name: ?*const sockaddr,
303 namelen: socklen_t,
304 iov: [*]const iovec_const,
305 iovlen: i32,
306 control: ?*const anyopaque,
307 controllen: socklen_t,
308 flags: i32,
309};
310
311pub const blksize_t = u32;291pub const blksize_t = u32;
312pub const nlink_t = u32;292pub const nlink_t = u32;
313pub const time_t = i32;293pub const time_t = i32;
lib/std/os/linux/powerpc.zig-20
...@@ -247,26 +247,6 @@ pub const Flock = extern struct {...@@ -247,26 +247,6 @@ pub const Flock = extern struct {
247 pid: pid_t,247 pid: pid_t,
248};248};
249249
250pub const msghdr = extern struct {
251 name: ?*sockaddr,
252 namelen: socklen_t,
253 iov: [*]iovec,
254 iovlen: usize,
255 control: ?*anyopaque,
256 controllen: socklen_t,
257 flags: i32,
258};
259
260pub const msghdr_const = extern struct {
261 name: ?*const sockaddr,
262 namelen: socklen_t,
263 iov: [*]const iovec_const,
264 iovlen: usize,
265 control: ?*const anyopaque,
266 controllen: socklen_t,
267 flags: i32,
268};
269
270pub const blksize_t = i32;250pub const blksize_t = i32;
271pub const nlink_t = u32;251pub const nlink_t = u32;
272pub const time_t = isize;252pub const time_t = isize;
lib/std/os/linux/powerpc64.zig-20
...@@ -233,26 +233,6 @@ pub const Flock = extern struct {...@@ -233,26 +233,6 @@ pub const Flock = extern struct {
233 __unused: [4]u8,233 __unused: [4]u8,
234};234};
235235
236pub const msghdr = extern struct {
237 name: ?*sockaddr,
238 namelen: socklen_t,
239 iov: [*]iovec,
240 iovlen: usize,
241 control: ?*anyopaque,
242 controllen: usize,
243 flags: i32,
244};
245
246pub const msghdr_const = extern struct {
247 name: ?*const sockaddr,
248 namelen: socklen_t,
249 iov: [*]const iovec_const,
250 iovlen: usize,
251 control: ?*const anyopaque,
252 controllen: usize,
253 flags: i32,
254};
255
256pub const blksize_t = i64;236pub const blksize_t = i64;
257pub const nlink_t = u64;237pub const nlink_t = u64;
258pub const time_t = i64;238pub const time_t = i64;
lib/std/os/linux/riscv32.zig-24
...@@ -198,30 +198,6 @@ pub const Flock = extern struct {...@@ -198,30 +198,6 @@ pub const Flock = extern struct {
198 __unused: [4]u8,198 __unused: [4]u8,
199};199};
200200
201pub const msghdr = extern struct {
202 name: ?*sockaddr,
203 namelen: socklen_t,
204 iov: [*]iovec,
205 iovlen: i32,
206 __pad1: i32 = 0,
207 control: ?*anyopaque,
208 controllen: socklen_t,
209 __pad2: socklen_t = 0,
210 flags: i32,
211};
212
213pub const msghdr_const = extern struct {
214 name: ?*const sockaddr,
215 namelen: socklen_t,
216 iov: [*]const iovec_const,
217 iovlen: i32,
218 __pad1: i32 = 0,
219 control: ?*const anyopaque,
220 controllen: socklen_t,
221 __pad2: socklen_t = 0,
222 flags: i32,
223};
224
225// The `stat` definition used by the Linux kernel.201// The `stat` definition used by the Linux kernel.
226pub const Stat = extern struct {202pub const Stat = extern struct {
227 dev: dev_t,203 dev: dev_t,
lib/std/os/linux/riscv64.zig-24
...@@ -198,30 +198,6 @@ pub const Flock = extern struct {...@@ -198,30 +198,6 @@ pub const Flock = extern struct {
198 __unused: [4]u8,198 __unused: [4]u8,
199};199};
200200
201pub const msghdr = extern struct {
202 name: ?*sockaddr,
203 namelen: socklen_t,
204 iov: [*]iovec,
205 iovlen: i32,
206 __pad1: i32 = 0,
207 control: ?*anyopaque,
208 controllen: socklen_t,
209 __pad2: socklen_t = 0,
210 flags: i32,
211};
212
213pub const msghdr_const = extern struct {
214 name: ?*const sockaddr,
215 namelen: socklen_t,
216 iov: [*]const iovec_const,
217 iovlen: i32,
218 __pad1: i32 = 0,
219 control: ?*const anyopaque,
220 controllen: socklen_t,
221 __pad2: socklen_t = 0,
222 flags: i32,
223};
224
225// The `stat` definition used by the Linux kernel.201// The `stat` definition used by the Linux kernel.
226pub const Stat = extern struct {202pub const Stat = extern struct {
227 dev: dev_t,203 dev: dev_t,
lib/std/os/linux/sparc64.zig-20
...@@ -282,26 +282,6 @@ pub const Flock = extern struct {...@@ -282,26 +282,6 @@ pub const Flock = extern struct {
282 pid: pid_t,282 pid: pid_t,
283};283};
284284
285pub const msghdr = extern struct {
286 name: ?*sockaddr,
287 namelen: socklen_t,
288 iov: [*]iovec,
289 iovlen: u64,
290 control: ?*anyopaque,
291 controllen: u64,
292 flags: i32,
293};
294
295pub const msghdr_const = extern struct {
296 name: ?*const sockaddr,
297 namelen: socklen_t,
298 iov: [*]const iovec_const,
299 iovlen: u64,
300 control: ?*const anyopaque,
301 controllen: u64,
302 flags: i32,
303};
304
305pub const off_t = i64;285pub const off_t = i64;
306pub const ino_t = u64;286pub const ino_t = u64;
307pub const time_t = isize;287pub const time_t = isize;
lib/std/os/linux/x86.zig-20
...@@ -245,26 +245,6 @@ pub const Flock = extern struct {...@@ -245,26 +245,6 @@ pub const Flock = extern struct {
245 pid: pid_t,245 pid: pid_t,
246};246};
247247
248pub const msghdr = extern struct {
249 name: ?*sockaddr,
250 namelen: socklen_t,
251 iov: [*]iovec,
252 iovlen: i32,
253 control: ?*anyopaque,
254 controllen: socklen_t,
255 flags: i32,
256};
257
258pub const msghdr_const = extern struct {
259 name: ?*const sockaddr,
260 namelen: socklen_t,
261 iov: [*]const iovec_const,
262 iovlen: i32,
263 control: ?*const anyopaque,
264 controllen: socklen_t,
265 flags: i32,
266};
267
268pub const blksize_t = i32;248pub const blksize_t = i32;
269pub const nlink_t = u32;249pub const nlink_t = u32;
270pub const time_t = isize;250pub const time_t = isize;
lib/std/os/linux/x86_64.zig-24
...@@ -233,30 +233,6 @@ pub const Flock = extern struct {...@@ -233,30 +233,6 @@ pub const Flock = extern struct {
233 pid: pid_t,233 pid: pid_t,
234};234};
235235
236pub const msghdr = extern struct {
237 name: ?*sockaddr,
238 namelen: socklen_t,
239 iov: [*]iovec,
240 iovlen: i32,
241 __pad1: i32 = 0,
242 control: ?*anyopaque,
243 controllen: socklen_t,
244 __pad2: socklen_t = 0,
245 flags: i32,
246};
247
248pub const msghdr_const = extern struct {
249 name: ?*const sockaddr,
250 namelen: socklen_t,
251 iov: [*]const iovec_const,
252 iovlen: i32,
253 __pad1: i32 = 0,
254 control: ?*const anyopaque,
255 controllen: socklen_t,
256 __pad2: socklen_t = 0,
257 flags: i32,
258};
259
260pub const off_t = i64;236pub const off_t = i64;
261pub const ino_t = u64;237pub const ino_t = u64;
262pub const dev_t = u64;238pub const dev_t = u64;