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;
103103pub const ino_t = arch_bits.ino_t;
104104pub const mcontext_t = arch_bits.mcontext_t;
105105pub const mode_t = arch_bits.mode_t;
106pub const msghdr = arch_bits.msghdr;
107pub const msghdr_const = arch_bits.msghdr_const;
108106pub const nlink_t = arch_bits.nlink_t;
109107pub const off_t = arch_bits.off_t;
110108pub const time_t = arch_bits.time_t;
......@@ -9403,3 +9401,23 @@ pub const SHADOW_STACK = struct {
94039401 /// Set up a restore token in the shadow stack.
94049402 pub const SET_TOKEN: u64 = 1 << 0;
94059403};
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 {
199199 __unused: [4]u8,
200200};
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
226202pub const blksize_t = i32;
227203pub const nlink_t = u32;
228204pub const time_t = isize;
lib/std/os/linux/arm.zig-20
......@@ -237,26 +237,6 @@ pub const Flock = extern struct {
237237 __unused: [4]u8,
238238};
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
260240pub const blksize_t = i32;
261241pub const nlink_t = u32;
262242pub const time_t = isize;
lib/std/os/linux/mips.zig-20
......@@ -309,26 +309,6 @@ pub const Flock = extern struct {
309309 __unused: [4]u8,
310310};
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
332312pub const blksize_t = u32;
333313pub const nlink_t = u32;
334314pub const time_t = i32;
lib/std/os/linux/mips64.zig-20
......@@ -288,26 +288,6 @@ pub const Flock = extern struct {
288288 __unused: [4]u8,
289289};
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
311291pub const blksize_t = u32;
312292pub const nlink_t = u32;
313293pub const time_t = i32;
lib/std/os/linux/powerpc.zig-20
......@@ -247,26 +247,6 @@ pub const Flock = extern struct {
247247 pid: pid_t,
248248};
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
270250pub const blksize_t = i32;
271251pub const nlink_t = u32;
272252pub const time_t = isize;
lib/std/os/linux/powerpc64.zig-20
......@@ -233,26 +233,6 @@ pub const Flock = extern struct {
233233 __unused: [4]u8,
234234};
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
256236pub const blksize_t = i64;
257237pub const nlink_t = u64;
258238pub const time_t = i64;
lib/std/os/linux/riscv32.zig-24
......@@ -198,30 +198,6 @@ pub const Flock = extern struct {
198198 __unused: [4]u8,
199199};
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
225201// The `stat` definition used by the Linux kernel.
226202pub const Stat = extern struct {
227203 dev: dev_t,
lib/std/os/linux/riscv64.zig-24
......@@ -198,30 +198,6 @@ pub const Flock = extern struct {
198198 __unused: [4]u8,
199199};
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
225201// The `stat` definition used by the Linux kernel.
226202pub const Stat = extern struct {
227203 dev: dev_t,
lib/std/os/linux/sparc64.zig-20
......@@ -282,26 +282,6 @@ pub const Flock = extern struct {
282282 pid: pid_t,
283283};
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
305285pub const off_t = i64;
306286pub const ino_t = u64;
307287pub const time_t = isize;
lib/std/os/linux/x86.zig-20
......@@ -245,26 +245,6 @@ pub const Flock = extern struct {
245245 pid: pid_t,
246246};
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
268248pub const blksize_t = i32;
269249pub const nlink_t = u32;
270250pub const time_t = isize;
lib/std/os/linux/x86_64.zig-24
......@@ -233,30 +233,6 @@ pub const Flock = extern struct {
233233 pid: pid_t,
234234};
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
260236pub const off_t = i64;
261237pub const ino_t = u64;
262238pub const dev_t = u64;